{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "lesson-3-rsna-pneumonia-detection-challenge-kaggle",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "metadata": {
        "id": "KBeAf8WgaeSk",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "## Intro to deep learning for medical imaging by [MD.ai](https://www.md.ai)\n",
        "\n",
        "## Lesson 3. RSNA Pneumonia Detection Challenge (Kaggel API)\n",
        "\n",
        "The [Radiological Society of North America](http://www.rsna.org/) Pneumonia Detection Challenge: https://www.kaggle.com/c/rsna-pneumonia-detection-challenge\n",
        "\n",
        "This notebook covers the basics of parsing the competition dataset, training using a detector basd on the [Mask-RCNN algorithm](https://arxiv.org/abs/1703.06870) for object detection and instance segmentation.  \n",
        "\n",
        "This notebook is developed by [MD.ai](https://www.md.ai), the platform for medical AI. \n",
        "This notebook requires Google's [TensorFlow](https://www.tensorflow.org/) machine learning framework.\n",
        "\n",
        "**Intro to deep learning for medical imaging lessons**\n",
        "\n",
        "- Lesson 1. Classification of chest vs. adominal X-rays using TensorFlow/Keras [Github](https://github.com/mdai/ml-lessons/blob/master/lesson1-xray-images-classification.ipynb) [Annotator](https://public.md.ai/annotator/project/PVq9raBJ)\n",
        "\n",
        "- Lesson 2. Lung X-Rays Semantic Segmentation using UNets. [Github](https://github.com/mdai/ml-lessons/blob/master/lesson2-lung-xrays-segmentation.ipynb)\n",
        "[Annotator](https://public.md.ai/annotator/project/aGq4k6NW/workspace) \n",
        "\n",
        "- Lesson 3. RSNA Pneumonia detection using Kaggle data format [Github](https://github.com/mdai/ml-lessons/blob/master/lesson3-rsna-pneumonia-detection-kaggle.ipynb) [Annotator](https://public.md.ai/annotator/project/LxR6zdR2/workspace) \n",
        "  \n",
        "- Lesson 3. RSNA Pneumonia detection using MD.ai python client library [Github](https://github.com/mdai/ml-lessons/blob/master/lesson3-rsna-pneumonia-detection-mdai-client-lib.ipynb) [Annotator](https://public.md.ai/annotator/project/LxR6zdR2/workspace) \n",
        "\n",
        "*Copyright 2018 MD.ai, Inc.   \n",
        "Licensed under the Apache License, Version 2.0*"
      ]
    },
    {
      "metadata": {
        "id": "tA57TGos4mtN",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# install dependencies not included by Colab\n",
        "# use pip3 to ensure compatibility w/ Google Deep Learning Images \n",
        "!pip3 install -q pydicom \n",
        "!pip3 install -q tqdm \n",
        "!pip3 install -q imgaug "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "4kjcC6QqywWl",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "import os \n",
        "import sys\n",
        "\n",
        "import random\n",
        "import math\n",
        "import numpy as np\n",
        "import cv2\n",
        "import matplotlib.pyplot as plt\n",
        "import json\n",
        "import pydicom\n",
        "from imgaug import augmenters as iaa\n",
        "from tqdm import tqdm\n",
        "import pandas as pd \n",
        "import glob "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "eCXdW8QfjB81",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### First: Install Kaggle API for download competition data."
      ]
    },
    {
      "metadata": {
        "id": "m3XCS28Oqw8Q",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Install Kaggle API for download competition data\n",
        "!pip3 install -q kaggle"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "5h0Pm-DP7KX5",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Next: You must accept the user agreement on the competition website! Then follow [instructions to obtain your Kaggle Credentials.](https://github.com/Kaggle/kaggle-api#api-credentials)  \n",
        "If you are unable to download the competition dataset, check to see if you have accepted the **user agreement** on the competition website. "
      ]
    },
    {
      "metadata": {
        "id": "PvGVpsN0tZqj",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# enter your Kaggle credentionals here\n",
        "os.environ['KAGGLE_USERNAME']=\"\"\n",
        "os.environ['KAGGLE_KEY']=\"\""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "yP0XLJx_x_6o",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Root directory of the project\n",
        "ROOT_DIR = os.path.abspath('./lesson3-data')\n",
        "\n",
        "# Directory to save logs and trained model\n",
        "MODEL_DIR = os.path.join(ROOT_DIR, 'logs')\n",
        "\n",
        "if not os.path.exists(ROOT_DIR):\n",
        "    os.makedirs(ROOT_DIR)\n",
        "os.chdir(ROOT_DIR)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "kdEZnDqjr7tp",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 341
        },
        "outputId": "192166c5-13e5-41b7-8800-cc96bcd7edf0"
      },
      "cell_type": "code",
      "source": [
        "# If you are unable to download the competition dataset, check to see if you have \n",
        "# accepted the user agreement on the competition website. \n",
        "!kaggle competitions download -c rsna-pneumonia-detection-challenge"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading GCP%20Credits%20Request%20Link%20-%20RSNA.txt to /content/lesson3-data\r\n",
            "\r  0%|                                                | 0.00/55.0 [00:00<?, ?B/s]\r\n",
            "100%|████████████████████████████████████████| 55.0/55.0 [00:00<00:00, 41.6kB/s]\n",
            "Downloading stage_1_detailed_class_info.csv.zip to /content/lesson3-data\n",
            "  0%|                                                | 0.00/561k [00:00<?, ?B/s]\n",
            "100%|████████████████████████████████████████| 561k/561k [00:00<00:00, 79.6MB/s]\n",
            "Downloading stage_1_sample_submission.csv to /content/lesson3-data\n",
            "  0%|                                               | 0.00/51.8k [00:00<?, ?B/s]\n",
            "100%|██████████████████████████████████████| 51.8k/51.8k [00:00<00:00, 39.2MB/s]\n",
            "Downloading stage_1_train_labels.csv.zip to /content/lesson3-data\n",
            "  0%|                                                | 0.00/634k [00:00<?, ?B/s]\n",
            "100%|████████████████████████████████████████| 634k/634k [00:00<00:00, 99.7MB/s]\n",
            "Downloading stage_1_test_images.zip to /content/lesson3-data\n",
            "100%|████████████████████████████████████████| 126M/126M [00:01<00:00, 69.3MB/s]\n",
            "\n",
            "Downloading stage_1_train_images.zip to /content/lesson3-data\n",
            "100%|█████████████████████████████████████▉| 3.16G/3.17G [00:50<00:00, 64.6MB/s]\n",
            "100%|██████████████████████████████████████| 3.17G/3.17G [00:50<00:00, 67.3MB/s]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "femDm6VVev6m",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Data is downloaded as zip files. Unzip the test and train datasets as well as the csv of  annotations."
      ]
    },
    {
      "metadata": {
        "id": "kHjgAwQyx_4H",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# unzipping takes a few minutes\n",
        "!unzip -q -o stage_1_test_images.zip -d stage_1_test_images\n",
        "!unzip -q -o stage_1_train_images.zip -d stage_1_train_images\n",
        "!unzip -q -o stage_1_train_labels.csv.zip"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "KLTUyeTMTe4u",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "###  MD.ai Annotator \n",
        "\n",
        "Additionally, If you are interested in augmenting the existing annotations, you can use the MD.ai annotator to view DICOM images, and create annotatios to be exported.  \n",
        "MD.ai annotator project URL for the Kaggle dataset: https://public.md.ai/annotator/project/LxR6zdR2/workspace\n",
        "\n",
        "**Annotator features**\n",
        "- The annotator can be used to view DICOM images and create image and exam level annotations.\n",
        "- You can apply the annotator to filter by label, adjudicate annotations, and assign annotation tasks to your team.\n",
        "- Notebooks can be built directly within the annotator for rapid model development.\n",
        "- The data wrangling is abstracted away by the interface and by our MD.ai library.\n",
        "- Simplifies image annotation in order to widen the participation in the futrue of medical image deep learning.\n",
        "\n",
        "The annotator allows you to create initial annotations, build and run models, modify/finetune the annotations based on predicted values, and repeat.  \n",
        "The MD.ai python client library implements functions to easily download images and annotations and to prepare the datasets used to train the model for classification. See the following example notebook for parsing annotations and training using MD.ai annotator: \n",
        "https://github.com/mdai/ml-lessons/blob/master/lesson3-rsna-pneumonia-detection-mdai-client-lib.ipynb  \n",
        "- MD.ai URL: https://www.md.ai  \n",
        "- MD.ai documentation URL: https://docs.md.ai/"
      ]
    },
    {
      "metadata": {
        "id": "kdYzLq1zfKL4",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Install Matterport's Mask-RCNN model from github.\n",
        "See the [Matterport's implementation of Mask-RCNN](https://github.com/matterport/Mask_RCNN)."
      ]
    },
    {
      "metadata": {
        "id": "KgllzLnDr7kF",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 143
        },
        "outputId": "6c978df7-2013-437e-acd1-5011048dfb53"
      },
      "cell_type": "code",
      "source": [
        "os.chdir(ROOT_DIR)\n",
        "!git clone https://github.com/matterport/Mask_RCNN.git\n",
        "os.chdir('Mask_RCNN')\n",
        "!python setup.py -q install"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Cloning into 'Mask_RCNN'...\n",
            "remote: Counting objects: 775, done.\u001b[K\n",
            "remote: Total 775 (delta 0), reused 0 (delta 0), pack-reused 774\u001b[K\n",
            "Receiving objects: 100% (775/775), 107.33 MiB | 24.02 MiB/s, done.\n",
            "Resolving deltas: 100% (446/446), done.\n",
            "WARNING:root:Fail load requirements file, so using default ones.\n",
            "zip_safe flag not set; analyzing archive contents...\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "-KZXyWwhzOVU",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "2576cc17-7484-4311-ad72-3c5643dcb5bb"
      },
      "cell_type": "code",
      "source": [
        "# Import Mask RCNN\n",
        "sys.path.append(os.path.join(ROOT_DIR, 'Mask_RCNN'))  # To find local version of the library\n",
        "from mrcnn.config import Config\n",
        "from mrcnn import utils\n",
        "import mrcnn.model as modellib\n",
        "from mrcnn import visualize\n",
        "from mrcnn.model import log"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow backend.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "metadata": {
        "id": "FghMmiMjzOX2",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "train_dicom_dir = os.path.join(ROOT_DIR, 'stage_1_train_images')\n",
        "test_dicom_dir = os.path.join(ROOT_DIR, 'stage_1_test_images')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "gj-tvDvEaDiC",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Some setup functions and classes for Mask-RCNN\n",
        "\n",
        "- dicom_fps is a list of the dicom image path and filenames \n",
        "- image_annotions is a dictionary of the annotations keyed by the filenames\n",
        "- parsing the dataset returns a list of the image filenames and the annotations dictionary"
      ]
    },
    {
      "metadata": {
        "id": "ivqC4cnszOaM",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "def get_dicom_fps(dicom_dir):\n",
        "    dicom_fps = glob.glob(dicom_dir+'/'+'*.dcm')\n",
        "    return list(set(dicom_fps))\n",
        "\n",
        "def parse_dataset(dicom_dir, anns): \n",
        "    image_fps = get_dicom_fps(dicom_dir)\n",
        "    image_annotations = {fp: [] for fp in image_fps}\n",
        "    for index, row in anns.iterrows(): \n",
        "        fp = os.path.join(dicom_dir, row['patientId']+'.dcm')\n",
        "        image_annotations[fp].append(row)\n",
        "    return image_fps, image_annotations "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "_SfzTa-1zOck",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 917
        },
        "outputId": "91ae8935-bccb-4b8e-9a7e-aa690f95fd9b"
      },
      "cell_type": "code",
      "source": [
        "# The following parameters have been selected to reduce running time for demonstration purposes \n",
        "# These are not optimal \n",
        "\n",
        "class DetectorConfig(Config):\n",
        "    \"\"\"Configuration for training pneumonia detection on the RSNA pneumonia dataset.\n",
        "    Overrides values in the base Config class.\n",
        "    \"\"\"\n",
        "    \n",
        "    # Give the configuration a recognizable name  \n",
        "    NAME = 'pneumonia'\n",
        "    \n",
        "    # Train on 1 GPU and 8 images per GPU. We can put multiple images on each\n",
        "    # GPU because the images are small. Batch size is 8 (GPUs * images/GPU).\n",
        "    GPU_COUNT = 1\n",
        "    IMAGES_PER_GPU = 8 \n",
        "    \n",
        "    BACKBONE = 'resnet50'\n",
        "    \n",
        "    NUM_CLASSES = 2  # background + 1 pneumonia classes\n",
        "    \n",
        "    # Use small images for faster training. Set the limits of the small side\n",
        "    # the large side, and that determines the image shape.\n",
        "    IMAGE_MIN_DIM = 64\n",
        "    IMAGE_MAX_DIM = 64\n",
        "    \n",
        "    RPN_ANCHOR_SCALES = (32, 64)\n",
        "    \n",
        "    TRAIN_ROIS_PER_IMAGE = 16\n",
        "    \n",
        "    MAX_GT_INSTANCES = 3\n",
        "    \n",
        "    DETECTION_MAX_INSTANCES = 3\n",
        "    DETECTION_MIN_CONFIDENCE = 0.9\n",
        "    DETECTION_NMS_THRESHOLD = 0.1\n",
        "    \n",
        "    RPN_TRAIN_ANCHORS_PER_IMAGE = 16\n",
        "    STEPS_PER_EPOCH = 100 \n",
        "    TOP_DOWN_PYRAMID_SIZE = 32\n",
        "    STEPS_PER_EPOCH = 100\n",
        "    \n",
        "    \n",
        "config = DetectorConfig()\n",
        "config.display()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "Configurations:\n",
            "BACKBONE                       resnet50\n",
            "BACKBONE_STRIDES               [4, 8, 16, 32, 64]\n",
            "BATCH_SIZE                     8\n",
            "BBOX_STD_DEV                   [0.1 0.1 0.2 0.2]\n",
            "COMPUTE_BACKBONE_SHAPE         None\n",
            "DETECTION_MAX_INSTANCES        3\n",
            "DETECTION_MIN_CONFIDENCE       0.9\n",
            "DETECTION_NMS_THRESHOLD        0.1\n",
            "FPN_CLASSIF_FC_LAYERS_SIZE     1024\n",
            "GPU_COUNT                      1\n",
            "GRADIENT_CLIP_NORM             5.0\n",
            "IMAGES_PER_GPU                 8\n",
            "IMAGE_MAX_DIM                  64\n",
            "IMAGE_META_SIZE                14\n",
            "IMAGE_MIN_DIM                  64\n",
            "IMAGE_MIN_SCALE                0\n",
            "IMAGE_RESIZE_MODE              square\n",
            "IMAGE_SHAPE                    [64 64  3]\n",
            "LEARNING_MOMENTUM              0.9\n",
            "LEARNING_RATE                  0.001\n",
            "LOSS_WEIGHTS                   {'rpn_class_loss': 1.0, 'rpn_bbox_loss': 1.0, 'mrcnn_class_loss': 1.0, 'mrcnn_bbox_loss': 1.0, 'mrcnn_mask_loss': 1.0}\n",
            "MASK_POOL_SIZE                 14\n",
            "MASK_SHAPE                     [28, 28]\n",
            "MAX_GT_INSTANCES               3\n",
            "MEAN_PIXEL                     [123.7 116.8 103.9]\n",
            "MINI_MASK_SHAPE                (56, 56)\n",
            "NAME                           pneumonia\n",
            "NUM_CLASSES                    2\n",
            "POOL_SIZE                      7\n",
            "POST_NMS_ROIS_INFERENCE        1000\n",
            "POST_NMS_ROIS_TRAINING         2000\n",
            "ROI_POSITIVE_RATIO             0.33\n",
            "RPN_ANCHOR_RATIOS              [0.5, 1, 2]\n",
            "RPN_ANCHOR_SCALES              (32, 64)\n",
            "RPN_ANCHOR_STRIDE              1\n",
            "RPN_BBOX_STD_DEV               [0.1 0.1 0.2 0.2]\n",
            "RPN_NMS_THRESHOLD              0.7\n",
            "RPN_TRAIN_ANCHORS_PER_IMAGE    16\n",
            "STEPS_PER_EPOCH                100\n",
            "TOP_DOWN_PYRAMID_SIZE          32\n",
            "TRAIN_BN                       False\n",
            "TRAIN_ROIS_PER_IMAGE           16\n",
            "USE_MINI_MASK                  True\n",
            "USE_RPN_ROIS                   True\n",
            "VALIDATION_STEPS               50\n",
            "WEIGHT_DECAY                   0.0001\n",
            "\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "8EBVA1M60yAj",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "class DetectorDataset(utils.Dataset):\n",
        "    \"\"\"Dataset class for training pneumonia detection on the RSNA pneumonia dataset.\n",
        "    \"\"\"\n",
        "\n",
        "    def __init__(self, image_fps, image_annotations, orig_height, orig_width):\n",
        "        super().__init__(self)\n",
        "        \n",
        "        # Add classes\n",
        "        self.add_class('pneumonia', 1, 'Lung Opacity')\n",
        "   \n",
        "        # add images \n",
        "        for i, fp in enumerate(image_fps):\n",
        "            annotations = image_annotations[fp]\n",
        "            self.add_image('pneumonia', image_id=i, path=fp, \n",
        "                           annotations=annotations, orig_height=orig_height, orig_width=orig_width)\n",
        "            \n",
        "    def image_reference(self, image_id):\n",
        "        info = self.image_info[image_id]\n",
        "        return info['path']\n",
        "\n",
        "    def load_image(self, image_id):\n",
        "        info = self.image_info[image_id]\n",
        "        fp = info['path']\n",
        "        ds = pydicom.read_file(fp)\n",
        "        image = ds.pixel_array\n",
        "        # If grayscale. Convert to RGB for consistency.\n",
        "        if len(image.shape) != 3 or image.shape[2] != 3:\n",
        "            image = np.stack((image,) * 3, -1)\n",
        "        return image\n",
        "\n",
        "    def load_mask(self, image_id):\n",
        "        info = self.image_info[image_id]\n",
        "        annotations = info['annotations']\n",
        "        count = len(annotations)\n",
        "        if count == 0:\n",
        "            mask = np.zeros((info['orig_height'], info['orig_width'], 1), dtype=np.uint8)\n",
        "            class_ids = np.zeros((1,), dtype=np.int32)\n",
        "        else:\n",
        "            mask = np.zeros((info['orig_height'], info['orig_width'], count), dtype=np.uint8)\n",
        "            class_ids = np.zeros((count,), dtype=np.int32)\n",
        "            for i, a in enumerate(annotations):\n",
        "                if a['Target'] == 1:\n",
        "                    x = int(a['x'])\n",
        "                    y = int(a['y'])\n",
        "                    w = int(a['width'])\n",
        "                    h = int(a['height'])\n",
        "                    mask_instance = mask[:, :, i].copy()\n",
        "                    cv2.rectangle(mask_instance, (x, y), (x+w, y+h), 255, -1)\n",
        "                    mask[:, :, i] = mask_instance\n",
        "                    class_ids[i] = 1\n",
        "        return mask.astype(np.bool), class_ids.astype(np.int32)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "9RlMo04ckd98",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Examine the annotation data, parse the dataset, and view dicom fields"
      ]
    },
    {
      "metadata": {
        "id": "EdhUEFDr0yDA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        },
        "outputId": "1715a5df-a577-41fd-bf20-f1a27aadb28c"
      },
      "cell_type": "code",
      "source": [
        "# training dataset\n",
        "anns = pd.read_csv(os.path.join(ROOT_DIR, 'stage_1_train_labels.csv'))\n",
        "anns.head(6)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>patientId</th>\n",
              "      <th>x</th>\n",
              "      <th>y</th>\n",
              "      <th>width</th>\n",
              "      <th>height</th>\n",
              "      <th>Target</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0004cfab-14fd-4e49-80ba-63a80b6bddd6</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>00313ee0-9eaa-42f4-b0ab-c148ed3241cd</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>00322d4d-1c29-4943-afc9-b6754be640eb</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>003d8fa0-6bf1-40ed-b54c-ac657f8495c5</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>00436515-870c-4b36-a041-de91049b9ab4</td>\n",
              "      <td>264.0</td>\n",
              "      <td>152.0</td>\n",
              "      <td>213.0</td>\n",
              "      <td>379.0</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>00436515-870c-4b36-a041-de91049b9ab4</td>\n",
              "      <td>562.0</td>\n",
              "      <td>152.0</td>\n",
              "      <td>256.0</td>\n",
              "      <td>453.0</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                              patientId      x      y  width  height  Target\n",
              "0  0004cfab-14fd-4e49-80ba-63a80b6bddd6    NaN    NaN    NaN     NaN       0\n",
              "1  00313ee0-9eaa-42f4-b0ab-c148ed3241cd    NaN    NaN    NaN     NaN       0\n",
              "2  00322d4d-1c29-4943-afc9-b6754be640eb    NaN    NaN    NaN     NaN       0\n",
              "3  003d8fa0-6bf1-40ed-b54c-ac657f8495c5    NaN    NaN    NaN     NaN       0\n",
              "4  00436515-870c-4b36-a041-de91049b9ab4  264.0  152.0  213.0   379.0       1\n",
              "5  00436515-870c-4b36-a041-de91049b9ab4  562.0  152.0  256.0   453.0       1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "metadata": {
        "id": "Mxz-pNbt5txY",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "image_fps, image_annotations = parse_dataset(train_dicom_dir, anns=anns)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "YPqjEIXWRhSf",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "ds = pydicom.read_file(image_fps[0]) # read dicom image from filepath \n",
        "image = ds.pixel_array # get image array"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "81lovwF2Ro5R",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 647
        },
        "outputId": "e2263fe2-1a32-432a-ec75-b9220a24e697"
      },
      "cell_type": "code",
      "source": [
        "# show dicom fields \n",
        "ds"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(0008, 0005) Specific Character Set              CS: 'ISO_IR 100'\n",
              "(0008, 0016) SOP Class UID                       UI: Secondary Capture Image Storage\n",
              "(0008, 0018) SOP Instance UID                    UI: 1.2.276.0.7230010.3.1.4.8323329.23009.1517874444.996430\n",
              "(0008, 0020) Study Date                          DA: '19010101'\n",
              "(0008, 0030) Study Time                          TM: '000000.00'\n",
              "(0008, 0050) Accession Number                    SH: ''\n",
              "(0008, 0060) Modality                            CS: 'CR'\n",
              "(0008, 0064) Conversion Type                     CS: 'WSD'\n",
              "(0008, 0090) Referring Physician's Name          PN: ''\n",
              "(0008, 103e) Series Description                  LO: 'view: PA'\n",
              "(0010, 0010) Patient's Name                      PN: '35f1e0f2-a8f1-4d65-b4f0-bf9686f90c40'\n",
              "(0010, 0020) Patient ID                          LO: '35f1e0f2-a8f1-4d65-b4f0-bf9686f90c40'\n",
              "(0010, 0030) Patient's Birth Date                DA: ''\n",
              "(0010, 0040) Patient's Sex                       CS: 'F'\n",
              "(0010, 1010) Patient's Age                       AS: '52'\n",
              "(0018, 0015) Body Part Examined                  CS: 'CHEST'\n",
              "(0018, 5101) View Position                       CS: 'PA'\n",
              "(0020, 000d) Study Instance UID                  UI: 1.2.276.0.7230010.3.1.2.8323329.23009.1517874444.996429\n",
              "(0020, 000e) Series Instance UID                 UI: 1.2.276.0.7230010.3.1.3.8323329.23009.1517874444.996428\n",
              "(0020, 0010) Study ID                            SH: ''\n",
              "(0020, 0011) Series Number                       IS: '1'\n",
              "(0020, 0013) Instance Number                     IS: '1'\n",
              "(0020, 0020) Patient Orientation                 CS: ''\n",
              "(0028, 0002) Samples per Pixel                   US: 1\n",
              "(0028, 0004) Photometric Interpretation          CS: 'MONOCHROME2'\n",
              "(0028, 0010) Rows                                US: 1024\n",
              "(0028, 0011) Columns                             US: 1024\n",
              "(0028, 0030) Pixel Spacing                       DS: ['0.14300000000000002', '0.14300000000000002']\n",
              "(0028, 0100) Bits Allocated                      US: 8\n",
              "(0028, 0101) Bits Stored                         US: 8\n",
              "(0028, 0102) High Bit                            US: 7\n",
              "(0028, 0103) Pixel Representation                US: 0\n",
              "(0028, 2110) Lossy Image Compression             CS: '01'\n",
              "(0028, 2114) Lossy Image Compression Method      CS: 'ISO_10918_1'\n",
              "(7fe0, 0010) Pixel Data                          OB: Array of 148454 bytes"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 17
        }
      ]
    },
    {
      "metadata": {
        "id": "gYNSd1AhRqOV",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Original DICOM image size: 1024 x 1024\n",
        "ORIG_SIZE = 1024"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "4FlRu8ML-ceg",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Split the data into training and validation datasets\n",
        "**Note: We have only used only a portion of the images for demonstration purposes. See comments below.**\n",
        " \n",
        " - To use all the images do: image_fps_list = list(image_fps)\n",
        " - Or change the number of images from 100 to a custom number"
      ]
    },
    {
      "metadata": {
        "id": "7jByVCZt-ZOC",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "f1aa267d-7530-4620-ffc5-2f7aa39083bb"
      },
      "cell_type": "code",
      "source": [
        "######################################################################\n",
        "# Modify this line to use more or fewer images for training/validation. \n",
        "# To use all images, do: image_fps_list = list(image_fps)\n",
        "image_fps_list = list(image_fps[:1000]) \n",
        "#####################################################################\n",
        "\n",
        "# split dataset into training vs. validation dataset \n",
        "# split ratio is set to 0.9 vs. 0.1 (train vs. validation, respectively)\n",
        "sorted(image_fps_list)\n",
        "random.seed(42)\n",
        "random.shuffle(image_fps_list)\n",
        "\n",
        "validation_split = 0.1\n",
        "split_index = int((1 - validation_split) * len(image_fps_list))\n",
        "\n",
        "image_fps_train = image_fps_list[:split_index]\n",
        "image_fps_val = image_fps_list[split_index:]\n",
        "\n",
        "print(len(image_fps_train), len(image_fps_val))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "900 100\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "9KUvacUbgiEX",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Create and prepare the training dataset using the DetectorDataset class."
      ]
    },
    {
      "metadata": {
        "id": "jwMkhotP0yFf",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# prepare the training dataset\n",
        "dataset_train = DetectorDataset(image_fps_train, image_annotations, ORIG_SIZE, ORIG_SIZE)\n",
        "dataset_train.prepare()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "wPDQ9EVDgxa6",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Let's look at a sample annotation. We see a bounding box with (x, y) of the the top left corner as well as the width and height."
      ]
    },
    {
      "metadata": {
        "id": "0xEc47Jz59x5",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 251
        },
        "outputId": "129edfbc-cf9d-46c7-b569-d804a50cd12d"
      },
      "cell_type": "code",
      "source": [
        "# Show annotation(s) for a DICOM image \n",
        "test_fp = random.choice(image_fps_train)\n",
        "image_annotations[test_fp]"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[patientId    89306dc8-a4ee-4679-b183-984ddd00f2fc\n",
              " x                                             164\n",
              " y                                             278\n",
              " width                                         289\n",
              " height                                        549\n",
              " Target                                          1\n",
              " Name: 13690, dtype: object, patientId    89306dc8-a4ee-4679-b183-984ddd00f2fc\n",
              " x                                             519\n",
              " y                                             256\n",
              " width                                         321\n",
              " height                                        619\n",
              " Target                                          1\n",
              " Name: 13691, dtype: object]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 21
        }
      ]
    },
    {
      "metadata": {
        "id": "K1TkWuGP0yHl",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# prepare the validation dataset\n",
        "dataset_val = DetectorDataset(image_fps_val, image_annotations, ORIG_SIZE, ORIG_SIZE)\n",
        "dataset_val.prepare()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "pEXEt8fygWuC",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Display a random image with bounding boxes"
      ]
    },
    {
      "metadata": {
        "id": "4xwsrf9G1lHR",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 359
        },
        "outputId": "a13386d3-a918-41fe-8824-13625c9d7b08"
      },
      "cell_type": "code",
      "source": [
        "# Load and display random samples and their bounding boxes\n",
        "# Suggestion: Run this a few times to see different examples. \n",
        "\n",
        "image_id = random.choice(dataset_train.image_ids)\n",
        "image_fp = dataset_train.image_reference(image_id)\n",
        "image = dataset_train.load_image(image_id)\n",
        "mask, class_ids = dataset_train.load_mask(image_id)\n",
        "\n",
        "print(image.shape)\n",
        "\n",
        "plt.figure(figsize=(10, 10))\n",
        "plt.subplot(1, 2, 1)\n",
        "plt.imshow(image[:, :, 0], cmap='gray')\n",
        "plt.axis('off')\n",
        "\n",
        "plt.subplot(1, 2, 2)\n",
        "masked = np.zeros(image.shape[:2])\n",
        "for i in range(mask.shape[2]):\n",
        "    masked += image[:, :, 0] * mask[:, :, i]\n",
        "plt.imshow(masked, cmap='gray')\n",
        "plt.axis('off')\n",
        "\n",
        "print(image_fp)\n",
        "print(class_ids)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(1024, 1024, 3)\n",
            "/content/lesson3-data/stage_1_train_images/485f1ddc-8562-432a-a27e-9c54375c19ac.dcm\n",
            "[0]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7fb4f68d0208>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "geTvh0sU1lJo",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "model = modellib.MaskRCNN(mode='training', config=config, model_dir=MODEL_DIR)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "ustAIH78hZI_",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Image Augmentation. Try finetuning some variables to custom values"
      ]
    },
    {
      "metadata": {
        "id": "STZnQTE61lME",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Image augmentation \n",
        "augmentation = iaa.SomeOf((0, 1), [\n",
        "    iaa.Fliplr(0.5),\n",
        "    iaa.Affine(\n",
        "        scale={\"x\": (0.8, 1.2), \"y\": (0.8, 1.2)},\n",
        "        translate_percent={\"x\": (-0.2, 0.2), \"y\": (-0.2, 0.2)},\n",
        "        rotate=(-25, 25),\n",
        "        shear=(-8, 8)\n",
        "    ),\n",
        "    iaa.Multiply((0.9, 1.1))\n",
        "])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "M4kt7LKuc78e",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Now it's time to train the model. Note that training even a basic model can take a few hours. \n",
        "\n",
        "Note: the following model is for demonstration purpose only. We have limited the training to one epoch, and have set nominal values for the Detector Configuration to reduce run-time. \n",
        "\n",
        "- dataset_train and dataset_val are derived from DetectorDataset \n",
        "- DetectorDataset loads images from image filenames and  masks from the annotation data\n",
        "- model is Mask-RCNN"
      ]
    },
    {
      "metadata": {
        "id": "RVgNhHjl1lOS",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 2575
        },
        "outputId": "2cba9efc-eeea-472d-d155-3c3d856585bf"
      },
      "cell_type": "code",
      "source": [
        "NUM_EPOCHS = 1\n",
        "\n",
        "# Train Mask-RCNN Model \n",
        "import warnings \n",
        "warnings.filterwarnings(\"ignore\")\n",
        "model.train(dataset_train, dataset_val, \n",
        "            learning_rate=config.LEARNING_RATE, \n",
        "            epochs=NUM_EPOCHS, \n",
        "            layers='all',\n",
        "            augmentation=augmentation)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "Starting at epoch 0. LR=0.001\n",
            "\n",
            "Checkpoint Path: /content/lesson3-data/logs/pneumonia20180827T1425/mask_rcnn_pneumonia_{epoch:04d}.h5\n",
            "Selecting layers to train\n",
            "conv1                  (Conv2D)\n",
            "bn_conv1               (BatchNorm)\n",
            "res2a_branch2a         (Conv2D)\n",
            "bn2a_branch2a          (BatchNorm)\n",
            "res2a_branch2b         (Conv2D)\n",
            "bn2a_branch2b          (BatchNorm)\n",
            "res2a_branch2c         (Conv2D)\n",
            "res2a_branch1          (Conv2D)\n",
            "bn2a_branch2c          (BatchNorm)\n",
            "bn2a_branch1           (BatchNorm)\n",
            "res2b_branch2a         (Conv2D)\n",
            "bn2b_branch2a          (BatchNorm)\n",
            "res2b_branch2b         (Conv2D)\n",
            "bn2b_branch2b          (BatchNorm)\n",
            "res2b_branch2c         (Conv2D)\n",
            "bn2b_branch2c          (BatchNorm)\n",
            "res2c_branch2a         (Conv2D)\n",
            "bn2c_branch2a          (BatchNorm)\n",
            "res2c_branch2b         (Conv2D)\n",
            "bn2c_branch2b          (BatchNorm)\n",
            "res2c_branch2c         (Conv2D)\n",
            "bn2c_branch2c          (BatchNorm)\n",
            "res3a_branch2a         (Conv2D)\n",
            "bn3a_branch2a          (BatchNorm)\n",
            "res3a_branch2b         (Conv2D)\n",
            "bn3a_branch2b          (BatchNorm)\n",
            "res3a_branch2c         (Conv2D)\n",
            "res3a_branch1          (Conv2D)\n",
            "bn3a_branch2c          (BatchNorm)\n",
            "bn3a_branch1           (BatchNorm)\n",
            "res3b_branch2a         (Conv2D)\n",
            "bn3b_branch2a          (BatchNorm)\n",
            "res3b_branch2b         (Conv2D)\n",
            "bn3b_branch2b          (BatchNorm)\n",
            "res3b_branch2c         (Conv2D)\n",
            "bn3b_branch2c          (BatchNorm)\n",
            "res3c_branch2a         (Conv2D)\n",
            "bn3c_branch2a          (BatchNorm)\n",
            "res3c_branch2b         (Conv2D)\n",
            "bn3c_branch2b          (BatchNorm)\n",
            "res3c_branch2c         (Conv2D)\n",
            "bn3c_branch2c          (BatchNorm)\n",
            "res3d_branch2a         (Conv2D)\n",
            "bn3d_branch2a          (BatchNorm)\n",
            "res3d_branch2b         (Conv2D)\n",
            "bn3d_branch2b          (BatchNorm)\n",
            "res3d_branch2c         (Conv2D)\n",
            "bn3d_branch2c          (BatchNorm)\n",
            "res4a_branch2a         (Conv2D)\n",
            "bn4a_branch2a          (BatchNorm)\n",
            "res4a_branch2b         (Conv2D)\n",
            "bn4a_branch2b          (BatchNorm)\n",
            "res4a_branch2c         (Conv2D)\n",
            "res4a_branch1          (Conv2D)\n",
            "bn4a_branch2c          (BatchNorm)\n",
            "bn4a_branch1           (BatchNorm)\n",
            "res4b_branch2a         (Conv2D)\n",
            "bn4b_branch2a          (BatchNorm)\n",
            "res4b_branch2b         (Conv2D)\n",
            "bn4b_branch2b          (BatchNorm)\n",
            "res4b_branch2c         (Conv2D)\n",
            "bn4b_branch2c          (BatchNorm)\n",
            "res4c_branch2a         (Conv2D)\n",
            "bn4c_branch2a          (BatchNorm)\n",
            "res4c_branch2b         (Conv2D)\n",
            "bn4c_branch2b          (BatchNorm)\n",
            "res4c_branch2c         (Conv2D)\n",
            "bn4c_branch2c          (BatchNorm)\n",
            "res4d_branch2a         (Conv2D)\n",
            "bn4d_branch2a          (BatchNorm)\n",
            "res4d_branch2b         (Conv2D)\n",
            "bn4d_branch2b          (BatchNorm)\n",
            "res4d_branch2c         (Conv2D)\n",
            "bn4d_branch2c          (BatchNorm)\n",
            "res4e_branch2a         (Conv2D)\n",
            "bn4e_branch2a          (BatchNorm)\n",
            "res4e_branch2b         (Conv2D)\n",
            "bn4e_branch2b          (BatchNorm)\n",
            "res4e_branch2c         (Conv2D)\n",
            "bn4e_branch2c          (BatchNorm)\n",
            "res4f_branch2a         (Conv2D)\n",
            "bn4f_branch2a          (BatchNorm)\n",
            "res4f_branch2b         (Conv2D)\n",
            "bn4f_branch2b          (BatchNorm)\n",
            "res4f_branch2c         (Conv2D)\n",
            "bn4f_branch2c          (BatchNorm)\n",
            "res5a_branch2a         (Conv2D)\n",
            "bn5a_branch2a          (BatchNorm)\n",
            "res5a_branch2b         (Conv2D)\n",
            "bn5a_branch2b          (BatchNorm)\n",
            "res5a_branch2c         (Conv2D)\n",
            "res5a_branch1          (Conv2D)\n",
            "bn5a_branch2c          (BatchNorm)\n",
            "bn5a_branch1           (BatchNorm)\n",
            "res5b_branch2a         (Conv2D)\n",
            "bn5b_branch2a          (BatchNorm)\n",
            "res5b_branch2b         (Conv2D)\n",
            "bn5b_branch2b          (BatchNorm)\n",
            "res5b_branch2c         (Conv2D)\n",
            "bn5b_branch2c          (BatchNorm)\n",
            "res5c_branch2a         (Conv2D)\n",
            "bn5c_branch2a          (BatchNorm)\n",
            "res5c_branch2b         (Conv2D)\n",
            "bn5c_branch2b          (BatchNorm)\n",
            "res5c_branch2c         (Conv2D)\n",
            "bn5c_branch2c          (BatchNorm)\n",
            "fpn_c5p5               (Conv2D)\n",
            "fpn_c4p4               (Conv2D)\n",
            "fpn_c3p3               (Conv2D)\n",
            "fpn_c2p2               (Conv2D)\n",
            "fpn_p5                 (Conv2D)\n",
            "fpn_p2                 (Conv2D)\n",
            "fpn_p3                 (Conv2D)\n",
            "fpn_p4                 (Conv2D)\n",
            "In model:  rpn_model\n",
            "    rpn_conv_shared        (Conv2D)\n",
            "    rpn_class_raw          (Conv2D)\n",
            "    rpn_bbox_pred          (Conv2D)\n",
            "mrcnn_mask_conv1       (TimeDistributed)\n",
            "mrcnn_mask_bn1         (TimeDistributed)\n",
            "mrcnn_mask_conv2       (TimeDistributed)\n",
            "mrcnn_mask_bn2         (TimeDistributed)\n",
            "mrcnn_class_conv1      (TimeDistributed)\n",
            "mrcnn_class_bn1        (TimeDistributed)\n",
            "mrcnn_mask_conv3       (TimeDistributed)\n",
            "mrcnn_mask_bn3         (TimeDistributed)\n",
            "mrcnn_class_conv2      (TimeDistributed)\n",
            "mrcnn_class_bn2        (TimeDistributed)\n",
            "mrcnn_mask_conv4       (TimeDistributed)\n",
            "mrcnn_mask_bn4         (TimeDistributed)\n",
            "mrcnn_bbox_fc          (TimeDistributed)\n",
            "mrcnn_mask_deconv      (TimeDistributed)\n",
            "mrcnn_class_logits     (TimeDistributed)\n",
            "mrcnn_mask             (TimeDistributed)\n",
            "Epoch 1/1\n",
            "100/100 [==============================] - 378s 4s/step - loss: 2.1243 - rpn_class_loss: 0.1504 - rpn_bbox_loss: 0.6770 - mrcnn_class_loss: 0.1817 - mrcnn_bbox_loss: 0.5040 - mrcnn_mask_loss: 0.6112 - val_loss: 2.1686 - val_rpn_class_loss: 0.1578 - val_rpn_bbox_loss: 0.6753 - val_mrcnn_class_loss: 0.2323 - val_mrcnn_bbox_loss: 0.5438 - val_mrcnn_mask_loss: 0.5593\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "eraRlzgPmmIZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "de9e688c-ba4f-4b62-f842-dbcf00ce397c"
      },
      "cell_type": "code",
      "source": [
        "# select trained model \n",
        "dir_names = next(os.walk(model.model_dir))[1]\n",
        "key = config.NAME.lower()\n",
        "dir_names = filter(lambda f: f.startswith(key), dir_names)\n",
        "dir_names = sorted(dir_names)\n",
        "\n",
        "if not dir_names:\n",
        "    import errno\n",
        "    raise FileNotFoundError(\n",
        "        errno.ENOENT,\n",
        "        \"Could not find model directory under {}\".format(self.model_dir))\n",
        "    \n",
        "fps = []\n",
        "# Pick last directory\n",
        "for d in dir_names: \n",
        "    dir_name = os.path.join(model.model_dir, d)\n",
        "    # Find the last checkpoint\n",
        "    checkpoints = next(os.walk(dir_name))[2]\n",
        "    checkpoints = filter(lambda f: f.startswith(\"mask_rcnn\"), checkpoints)\n",
        "    checkpoints = sorted(checkpoints)\n",
        "    if not checkpoints:\n",
        "        print('No weight files in {}'.format(dir_name))\n",
        "    else: \n",
        "      \n",
        "      checkpoint = os.path.join(dir_name, checkpoints[-1])\n",
        "      fps.append(checkpoint)\n",
        "\n",
        "model_path = sorted(fps)[-1]\n",
        "print('Found model {}'.format(model_path))"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found model /content/lesson3-data/logs/pneumonia20180827T1425/mask_rcnn_pneumonia_0001.h5\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "TgpT9AzC2Bgz",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 53
        },
        "outputId": "60f5a175-4666-497d-b4e8-0bdab39a92d0"
      },
      "cell_type": "code",
      "source": [
        "class InferenceConfig(DetectorConfig):\n",
        "    GPU_COUNT = 1\n",
        "    IMAGES_PER_GPU = 1\n",
        "\n",
        "inference_config = InferenceConfig()\n",
        "\n",
        "# Recreate the model in inference mode\n",
        "model = modellib.MaskRCNN(mode='inference', \n",
        "                          config=inference_config,\n",
        "                          model_dir=MODEL_DIR)\n",
        "\n",
        "# Load trained weights (fill in path to trained weights here)\n",
        "assert model_path != \"\", \"Provide path to trained weights\"\n",
        "print(\"Loading weights from \", model_path)\n",
        "model.load_weights(model_path, by_name=True)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Loading weights from  /content/lesson3-data/logs/pneumonia20180827T1425/mask_rcnn_pneumonia_0001.h5\n",
            "Re-starting from epoch 1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "metadata": {
        "id": "9mTBig7D2BjU",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# set color for class\n",
        "def get_colors_for_class_ids(class_ids):\n",
        "    colors = []\n",
        "    for class_id in class_ids:\n",
        "        if class_id == 1:\n",
        "            colors.append((.941, .204, .204))\n",
        "    return colors"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "A8EiL2LOiCr_",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### How does the predicted box compared to the expected value? Let's use the validation dataset to check. \n",
        "\n",
        "Note that we trained only one epoch for **demonstration purposes ONLY**. You might be able to improve performance running more epochs. "
      ]
    },
    {
      "metadata": {
        "id": "irheTbrW2Bl0",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1394
        },
        "outputId": "56041ad4-173d-45ab-af67-f54e8333511e"
      },
      "cell_type": "code",
      "source": [
        "# Show few example of ground truth vs. predictions on the validation dataset \n",
        "dataset = dataset_val\n",
        "fig = plt.figure(figsize=(10, 30))\n",
        "\n",
        "for i in range(4):\n",
        "\n",
        "    image_id = random.choice(dataset.image_ids)\n",
        "    \n",
        "    original_image, image_meta, gt_class_id, gt_bbox, gt_mask =\\\n",
        "        modellib.load_image_gt(dataset_val, inference_config, \n",
        "                               image_id, use_mini_mask=False)\n",
        "        \n",
        "    plt.subplot(6, 2, 2*i + 1)\n",
        "    visualize.display_instances(original_image, gt_bbox, gt_mask, gt_class_id, \n",
        "                                dataset.class_names,\n",
        "                                colors=get_colors_for_class_ids(gt_class_id), ax=fig.axes[-1])\n",
        "    \n",
        "    plt.subplot(6, 2, 2*i + 2)\n",
        "    results = model.detect([original_image]) #, verbose=1)\n",
        "    r = results[0]\n",
        "    visualize.display_instances(original_image, r['rois'], r['masks'], r['class_ids'], \n",
        "                                dataset.class_names, r['scores'], \n",
        "                                colors=get_colors_for_class_ids(r['class_ids']), ax=fig.axes[-1])"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\n",
            "*** No instances to display *** \n",
            "\n",
            "\n",
            "*** No instances to display *** \n",
            "\n",
            "\n",
            "*** No instances to display *** \n",
            "\n",
            "\n",
            "*** No instances to display *** \n",
            "\n",
            "\n",
            "*** No instances to display *** \n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nzjVqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq566PugEflq9//evT8tGjR6fl3/u931u37V13rV2W\nbdu2Tcv33nvvGGOMBx54YFp3+fLlafn++++flrdu3TotP/jgg2OMMT7+8Y9P686cOTMt33HH2jh0\n3759C58ZY4xjx46lbePyli1bFv53eb/vvffetPzoo49Oy/fdd98YY/Ga8NjRnjHWzvvkyZNpG3bv\n3p0eO7a5++67p3VcpjfffHOMMcY999yT/v3111+flt95551pOc77rbfemta9/fbb0/LFixen5UuX\nLi0ca4zF75FeffXVafnUqVNjjDHeeOONaR2P9+6776Zte//99xf+91qfi/Pg9bty5Up6TurD/sv+\nK9h/rY4JkCRJascBkCRJaqfNT2CMVo8cOTItR3TIyO7v//7vp+W/+Iu/mJa/9a1vjTEWo1Lud/v2\n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\nbFuW/45lRn78O2NjRouxDWtuVLFoxI1VbMyaClzO4t2qNkQWAVeT6LL1VdxcRaTZcblt9rmNbFtN\nysswCs4mKmYTGZfXx/VmDZQqpuY+3nrrrTHG4jnx2J/61Kem5Sgrz+u6mYmMuj3Zf9l/LS/bf904\nEyBJktS+5HfIAAAgAElEQVSOAyBJktTOlitZUQFJkqTbmAmQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQ\nJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElqxwGQJElq\nxwGQJElq566PugEfljvvvPOaf79y5Uq6vGXLlg+sTddyxx1rY1O2nct33333tLx3794xxhgPPPDA\ntO7+++9Pl7nNvffeO8YY46GHHprWbdu2bVp+8803p+W77vrRP5f33ntvWsdrxc+9++670/I777yz\n8L/L+33jjTem5bfeemuMMcbrr78+rbt48eK0fP78+Wn5tddeW7eP999/f9zK4t8bv/+tW7dOyxcu\nXPjQ26SPnv2X/det4Fbrv0yAJElSOw6AJElSO21+AiPGnpkPIzZmRMjjcX1gbHzPPfdMyxH/jrEW\n7zJWjnXLyxTHZhsY9fJaXb58eYxRx7SMjd9+++1pObbnecxF5FXbq/OL9dwv23Mz/CywGXGtx1iL\n1aUx7L/I/uvmdKv0XyZAkiSpHQdAkiSpnTY/gc3FxqvGKDOLhRljZhFyFZUyQr7vvvvWree2VRuy\n9jA25hMXFJE128Y4uYpvs5i6is1j3zwGnyLgExw8dkTP/DvPKXvyg5+vnqL5sEV0zGvCOFk92X/Z\nfwX7r9UxAZIkSe20SYBWiaP/qj5HdrewkYmDc3dCvLPgcrSD+80mGS4vxz64LffLO6FoR3UnVE12\njDuAaiIf2xN3Ndnnl7fldYn28+9sT3Y3xc9Xd1BcjrZ9kHdY2QTHj/KOTrcf+y/7rw/KrdZ/mQBJ\nkqR2HABJkqR2/AlsRhZZbqQOQ1YnoprIl0W6VVRa1aKIyJVl4jnJsIqIYxsej5EtjxdRZhX/sj08\ndnyO5eMZEWe1OngMTgDk8XhOsU0VlXM5YnHul+dcTS6Ma8Ftucz9rbJWx80cIevmZv9l/xXsv9Yz\nAZIkSe04AJIkSe20+QmsimGzGg9ZnYnlbbJ1VbybRc/VEwdzETIxpo3omDUn+PfqjczZ0xdV9JpF\n4VWcmtV+qJ5aqN4Qnf2d58dy9fE5Pi3BffEaR4Rc1dmoIuTYhudWnQfX80mUjeLnq+9ffdh/2X8F\n+6/VuXlbJkmS9AFxACRJktpp8xMYI8SsoFdVHCuLjas4dq7AFtdlsTGX52LVMRZLvkdczNh4I8XI\nsqcWqjg9lqtZ/TwnxrMRyc7tl9tUT5nwuvBcs2MwFs72x3WMjbmcPV3B/VZPYmRF0772ta9N677y\nla+MjbqZn6LQh8P+y/5reX/2XzfOBEiSJLXTJgHiXcPcHdLc6L26a+K2FNuzDawBke2vuoOqXrKX\nlaDfyIsFs+NVdyHZXcrcxMkx1u4suC3vNua+j6zOyBiLNUPeeOONdZ/n53hHF8fOSvGPUU8AjHPK\nanIsL/MuLI5TlfnntbieCYe6/dl/2X8tH9v+68aZAEmSpHYcAEmSpHa2XLmZZyit0Je+9KVpmRFg\nRK+MGFmf4eWXX56WoxR6FU1WMXVsPzeRcYzFaDEwKq7i5DhGFbdywl0Wi7Jt3AfbFlHnXKn5MRaj\n5zheNcmO6996660xxmIEG+uWt+U2ESFXE/y4HN8ZP89rUr31OdZXEwezc+ZyVZ+DYn/ctqrxoT7s\nv+y/gv3X6pgASZKkdhwASZKkdto8Bfbaa69Ny1lEuH379mndtm3bpuWsdDljY0aMjGkZLcb6U6dO\nTeuqqDfW87hVpJs9+cBzY9yYPUXA7Rmbc7/8XMTMWRy73LaqFsW11o2xdi14DMbbbOeuXbum5agp\n8vrrr0/rqkg3rmcVx/L7zyLi6mkJnj/fHB3XiNfq4sWL03JWNr561YB6sv+y/wr2X6tjAiRJktpx\nACRJktpp8xMYI7vPfvaz03JElufOnVu3bozFuDCiRUaTVUGorGjWoUOH0mOcP39+3frqKYus0NYY\nazFk9cZingcjydgme1pgjMXINvbNddUTILxGsQ2vD2NxHi+W2UbGsbyuPEZEyLyuFy5cGJkHH3xw\n3TF4TmwbjxHH5jq2jXbs2LHuc1Vszv0dO3ZsjDHGK6+8su7z6sv+y/4r2H+tjgmQJElqxwGQJElq\np00hxF/4hV+YlrMojzPnI2KstiVePkaSfCoj9sGCWNWblSPKZKxYFd3iUxuxPfdVxcLZe2yqd/Aw\nWo24lPvl+2yqQmoRX1dPeGTtrJ4A4XL2nqMqmma8nRUdq55OyeJbXr8qps7+XVTvyeG/i2gnj/u9\n731vWn7ppZfSfej2Zv9l/xXsv1bHBEiSJLXTZhL0008/PS1zFM7JWoET8XiXEqNsfp446r106dK6\n/VVvQs4mJXLEX428szsWtp3trO70snOpStDHMu9uuK/qzcLRprny8Vxf3Zllb2keY+16ZaXvl9fH\nBL/qzqwq4x44cZC1PPg53nlG+3lOPB7PKeqA8A589+7d69qgXuy/7L+C/dfqmABJkqR2HABJkqR2\n2vwEFnUWxliMZyP2Y6THCYXcNptwx8/NvcmXkSZLnmdl5bOJZcsY00asyZoc1cQ4Rpmxb7ahqgcS\n55GVlx+jfkNwtJPRK0v7cznavHfv3nVtXD7e3NuJq7g52sHviJE+a6pQXCP++8jemr28HPubmzg5\nxtq/U7aBx1NP9l/2X8H+a3VMgCRJUjsOgCRJUjttfgKr4tSYBc9Z74wbGZfu3LlzjLEY3XKGf1XG\nPI7H6JaxIePiWJ+9KXm5nVEPgm1ibMo28GmI7JwYeVbRaxbTZmXglz8XUS33y+WHHnpoWo6YNXsb\n8XI7s2vPv1dPn2Tt5fH2798/LfMaR3zNtlfl6LM3Z7O9VX2W7CkSnpN6sv+y/7pW2+2/ro8JkCRJ\nascBkCRJaufmzaZWjDFsFWUGRnac+R4RIOPdamZ89vQBI82qGFdsyziyimazGJJxK2NjHoOz8qMd\nPB63pYi6qzc2U/bm5OzNzGMsxrRxDRm3UvWm5zgPtr2KwmN99t0vt4dvRY6nOfg9VvF+RPM8F+6X\nsmJk/FmB/1bUk/2X/dfyevuvG2cCJEmS2mmTAHFEnr1EjnU2iKPsGMlWE9lY+4Cj3uxOhyNvbhsj\nZ94JseYGP8dy9dEO1oPgJEK2kyP9rAQ7/87rEi9ZrO4gqtLtsb+qzD3vFuLaXrx4cVrHz/HOJLtb\n5F1j9TLB7OWG1aRN3vXE+fNz1d0295fdefM8srL6vKvisnqy/7L/CvZfq2MCJEmS2nEAJEmS2mnz\nE1hV+2BuQlmGUSGjTkaPlL3pmPtgJBuRJePRM2fOTMvVW5EjpmUpedaG4Bt5s0lp1QTIbNuqBkT1\nFuJoByNvnt/Zs2en5agfwWvC9pw4cWJa5rWI0vM8ButzZJMIq8ibsTDXR5urehiM27NJkJy8WU1w\nzMrGz9UD0e3P/sv+K9h/rY4JkCRJascBkCRJaqflT2AUUR/jz2rb2KaKUKsYMravak4w9ow4lU8W\nMApm27g+ZvgzuqzewkxZ27ic1cxgpMu/83iMiOO6MPKungzJrm1V5p9Onz49xhjjwIED0zpGutlT\nMjyPqpQ+t4nvhLU1iLF5fB9jbO5Nz7G++jlCPdl/5ey/fsT+6/qYAEmSpHYcAEmSpHba/ARWvZE2\ni0W5nL05mdEtI1vG0Fn59yr+5TFiW8aRc+2pzoPt4TKvRSxzXVWOPY7N41bxL7eJ4l4sysWCXzzX\nOHZW7G2M+roFPpHBomo8pzhXnlv1FEl2raqInZ+j+Fz12gFG77G+elpGPdl/2X8F+6/VMQGSJEnt\nOACSJEnttPkJrIoLs9nq3DaLiKsZ7lXUGxEi489XX3013XbuSQ0+XZF9rop3q/f/hOr6cH1Estms\n/zHy98eMsRYHV8XTsqcr+NRD9TkeL9rEa8x3CWXvsan+HVTnH+urv1cFyLK/V2/0zorO3cwRsj4c\n9l/2X8H+a3VMgCRJUjttEiCW6Ga59RjpV3ceWX2NrEbG8rbZ23tZL4OTxLKJgWwj60iwbZxol9X+\nYNs4aS8rt866F1HOfYzFO49oc3WnUE1gjO23b9+etp3l4WN/LNHPtvGcOEkw2sa7jddee21a5vnH\nvwX+m+B+qzcrZ29F5vH4nWZ3UHN3ZmPkExyryYnqw/7L/ivYf62OCZAkSWrHAZAkSWqnzU9gjCSz\nCJgxLePGuUmGxFiUcWJMjGMUym0Z6TI6DlmdjTEWI9SIN/kGYcbiXObxQnVOvFbZBMdq4iDPNduW\n+8jeaszPVyX4s3if67hfTi6Ma8yoPCuZz/aw/dwv21nVYslqY2xmEuGtUlZeHxz7L/uvYP+1OiZA\nkiSpHQdAkiSpnTY/gc1Fdoz3qlgwttlI+fSs9gPjWEbWrI0Rx2B7+GZeRqHcX/akBuPkqox7PAWQ\nxdHcL9vEv/Na8pyzpwt43KhlMcYY586dm5aj/XNvWF5uW7SD2/Ktx9xffL/clnFyVcY/jlHFzfwe\nea6hevomi4ir2Fw92X/ZfwX7r9UxAZIkSe04AJIkSe20/Aksm+FevQmZ8V6s30hZekbEgfEui1zx\n2FFCnXEk98Wok/uLfTAqrkrJs/2xb8bCc4W0qkJijEWzGJbnyb9nb15mGxjp81rwe8qidx6Dy1lp\nf5aur94mnR03e2VAdTxeHxaay94sXX136sn+y/4r2H+tjgmQJElqxwGQJElq5+bNplZs7m3BVWyc\nfS6LB5f3wc9FITHGwnORLuNGxpSMiLO3Plfv2smKbvE4VSG16h1D2b7m3qtTPaly9uzZaTneb1O9\nPyZ7SzPPYyNFvkL1fVXHy7bZyPlnT4HwO+XPAlnbqqdI1If9l/3XMvuvG2cCJEmS2mmZAGUTCjlK\nnSvjXd01VZPdYlJaVWqdI+hXX311jLE4wmYbeHfDdsS+uS8ej+t5F7Z///51x6jumrIy59WdZ/ZG\nal7jajJgTOzjRD62N7vb4L75ueouJa59dXeU1U6pZHU2ltfH91SVhOeE0qh9cjPfNenDZ/9l/xXs\nv1bHBEiSJLXjAEiSJLXT5iewuclwVWyYTYaryqczFs7iVNZOOHny5LTMyYWxb5aPr97SPDdRj+Xh\nGVNu37593TZZefnl88hKqVMVLUc7eYxXXnllWs7e2ExsQ0zIXD5GnBOvCWtjZKXbGTHzuFWdkGxf\n3LZ6m3J2vapt49/QXBvUi/2X/dfy/uy/bpwJkCRJascBkCRJaqfNT2BVRJyVh6csetxsae/4HKNi\nYrQccXFV94LrL168OC1HXFpFrIyTuRznx3XEGDbaVsWbjNCzJzz45ATPmd9NxMy8Voy/qwg9nrTY\nu3dv+neeRxyb3y23rX5uyGpxVNciW577+xhr32/UExkjfy2BerH/sv9aPrb9140zAZIkSe04AJIk\nSe20+QmsKg8fMWJVujsrGsYYl9tyPSPQCxcurNsXn2RgoazYH9+UXBUVmytBXp0TY+aIjtk2Lldv\nAM6OweiVn4v1fDqDkW72BAOvH68VY/MshmXczPbs3r173TGqsvOMbxkbx/dQFSCrlqNt/BxlBciq\n1xWoJ/sv+6/lY9h/3TgTIEmS1M7NOzRbsWqSYIxYqxfLcZSeTTiM0udj1C8AjIlx1WQwjt7jc9UE\nN7aHdxlREn7Xrl3Tuuxle2Ms1ujYuXPnwrmNUd9NRTvYhqrkeVb7gceI9o4xxuHDh6fluAPi9ePd\nFtvOO5L4HniMbHImzyObIDlGfScU16IqGb+R+iLZ57Lvl+3J7lzVi/2X/dfyedh/3TgTIEmS1I4D\nIEmS1E6bn8Cq2DOrcVB9Lmxkol5WVp2R7/nz56dlRssRne7YsWNax0l22Vt6q/NgRMrP7du3b1qO\neJL7YtsZ02aT2Rj1VrFoLHNfrNsRMfYYa9fo1KlT0zpeV17v7I3V3G81GTKrB1LVw8jqr1Q1WaqJ\nqtl3U/0bis9V9ULUk/2X/Vew/1odEyBJktSOAyBJktROm5/AqhnuEdVd75MBjHerGDrqVrz66qvT\nOs6Mz+pP8OkMtp1vJL7WscZYfOKA0Sqj5YhO2R7Wu8hi1ir+nLuG/DvPmTF0xMK8Vjx/1hxh2+Jc\nua56K3R8Z3x6pXpSgZ/LIvTq31UWF1fXirJ/j/y5QT3Zf9l/Bfuv1TEBkiRJ7TgAkiRJ7bT5CSx7\ncoLLVSExyoo8VW/hZZQb6xnd8gkAlj+PbapS8lUZ+ygrzzLom3nCgREql7MItYpC2TZei7hec4W9\neAy+Ffns2bPr/r4sYtZHHnlkWsdS+1lJeLahKvOePRmxmScnaK7UvFSx/7L/CvZfq2MCJEmS2nEA\nJEmS2mnzE9hcZFdFzFlBsGpbxr6MSyOyrGJczuaPpyd4DBb+ymLjMdaeIuC6qiAWny6I/VVvCM4K\nbFXvj6mi1dgHI2bikyFx/nzqg3Eyny45c+bMtBxtYnTPdj788MPr2ly9/bp6coLnlx0j+2mCx6sK\nzc3Jjqte7L/sv5bbbP9140yAJElSO20SoGp0e611Y+Sl4jkS5sibkwR5VxR3NSdPnpzWcaTPOxpO\nbAuso8DaGGxbrOfdBmtOzL0hmHdQVbn6+FxVEr0qeR7bVG8s5udim2pSHz322GPTcty9cuIk72iz\nN0jzbrO6PpT9G6nOee6Ovfr3GMtV+Xz1ZP9l/xXsv1bHBEiSJLXjAEiSJLXT5iewuUlbG3lDbtS+\nqGpucFtGmREzc2IhI2bG0BHZcl8PPfTQur8vbxM4yY6RNtvMeDbaVMXG1cTHTFWaPa4RP8/aIdu3\nb5+WX3zxxTHGYoTKCJ3bZnUyeJ68rtmbrDl5kTE+a5zwGLHv6t9Sda3iXKrJqTzX+G428ooC9WH/\nZf+1vD/7rxtnAiRJktpxACRJktpp8xNYVcMgm6HOiJVRXnyO8TDjPT61kK1nrMqIMfsc28jPXbhw\nYVpmbYhoM8+Tba9i6Fieq53BbbhtVY49ewqA63bs2DEt8/w/8YlPjDHWouQxFsvjV99dFutWb5PO\nouCqfH5Wi6Q67mbaVh0jrhHj+Jv5KQp9OOy/7L+WP2f/deNMgCRJUjsOgCRJUjttfgKrnpLIimNV\ns90jLuXnL168OC1ncfMYa1Emo2fO1GfbovhV9XQGi2dRPAXApwF4vLk3AGexctWO6vpUslLyfMKD\n7YwnGxj/MpquirHt379/3bpdu3ZNy1nZfaoKqTH2zt7kvJG3cIeqAFsWETOaZ4Sunuy/7L+C/dfq\nmABJkqR22iRAVd2CUNWIyF6AxxLlHP1z4hc/F3c1HClzhMzRfdxBVDU5uMyJb3G8U6dOTeseeeSR\naZmT6LKXAVZ3TdnL8qo7qGpyZSzzGNU5xfGefPLJad33vve9afnxxx+flvk9xj44WfLll1+elg8e\nPDgtx/fAOxPW2eD6rDbGZiakLu9jo3j9zp49u+nP6/Zi/2X/Fey/VscESJIkteMASJIktdPmJ7DN\nTPaq/h4xIyeccdIeY2PGolE2nTFltW1McGMbGIsyWuQ+IqZk/Mm2VZPkYv3cG5S5XE2Aq+qPzG3L\ndkY7Xn311WkdS74zemcsHsv8e/a25THGePTRR8cYi9edbWBdDx5jbsJpNVEzi5aznzG4vmqPerL/\nsv8K9l+rYwIkSZLacQAkSZLaafkTWFYevIoF+WRE1H5gHMl6EIxFOfOdUeVce/g25OwYfHKCT19E\ndMq3DXOZUSj3F+dfRcxzdTQYhc699beKnhl7R1zK9u7Zs2da5pMRfCNz7COrdTHG4rWIJ00OHTqU\nnkdV8j+uRRX/Vucf5zr3d+6b/34YJ6sn+y/7r2D/tTomQJIkqR0HQJIkqZ02P4FVEXG2rioIlRWr\nYtR3/vz5aZklzSOS5Ax/RtMUkSUjVEaajJizgl47d+6c1nEfjIgZs0Y8Wb0VOFvmuqp8fnaNq+vK\nKDzalj1ZMUZdKOz48eNjjMUnJ9g2PsES+zhz5sy0jgXKqkJp2c8NVZyc4bbZ26a5b7b3Zo6Q9eGw\n/7L/Wt6H/deNMwGSJEntOACSJEnttPkJrIo3s1iwinejoBWfoqjwSYV44zLj3x07dqxrA9vBJwv4\nxmaeB4ttRVxcxbRV1BvL1ZMT1frs79WxIy6tnnDIotUq0ue137dv37Qc381LL700ravephzXgm9V\n5hMZfGojK0BXRejVOWVPUVTXKp4i4c8Rm4mpdXuy/7L/CvZfq2MCJEmS2mmZAGV3CNWbjilGt7wT\n4h0E75p4d/Pwww+PMRbvzPi57M3CbA//zsllWfl3jrariXhZ7Qtek6qUfLaumhg3N/mOdx5cjsmO\n3BevK/FaxORJXivebXESZdy98prwDovHzu5uqboW2d1SddeUfdds+9yrD3T7s/+y/wr2X6tz87ZM\nkiTpA+IASJIktdPmJzDKokDGmFVp97fffnuMsRjpRTw8xmINi0ceeWRavnDhwhhjjNOnT6/b1/Kx\nY/LgK6+8Mq1j/Jm93Zef45uHeR6MhbPlKjbOItTqzdRV/YksQuV+s7clV6XtuQ/WF4l4/+DBg9M6\nXkPWzIjP8Ttie6trPFd/pSoVH+uryYA8Rkxm/Pa3vz2t+/jHP55+Tj3Zf9l/jWH/tQomQJIkqR0H\nQJIkqZ02P4FVUWBEp3zCgU9R8C282ez7qqYC9xH1HPj2XpaaZ82EqAPBSJdxKqNnHiOemMhqhPDv\ny8txnCo2Zjvm6kEwIs3qdlRPJHAf8bnqurLtPP940oLfI8vKZ28nZn2SAwcOjEz2tAcj7+xN2cuf\ny97CXMXt2ZM63//+99NjqA/7L/uv5X3Yf904EyBJktSOAyBJktROm5/AqsguYj2uY5l3RoSMQEP1\nZACj1zhGVjBrjMWy8RFl8omLI0eOpPvdu3fvtBwxNd82zKcMGL3y2LHMtldRbyxXTw5UBdiyAlrZ\nG4THWItnGQXzu+ExuI84D14fbvsTP/ET0/LJkyfHGIsFyvg9V09RZAXReLyqrHysr56yoKzcPovS\nqSf7L/uvYP+1OiZAkiSpnTYJUFUqPUa3VR0J3oXE+mriHGUvk+PnsolzxNH9448/Pi0///zz6XnE\nMu+OqomBWYn5672D4nlkd41sB+9osjobY6zdyVSTPvl9cH32PVTXOM6fEzJ53bivbBJl1bbqDiq7\nbtUkybgDrkr/qyf7L/uvYP+1OiZAkiSpHQdAkiSpnZY/gWXxHSO7KobNJsNVtRGy2K+KGDNVTPvj\nP/7j0/LLL788LUddjir+nKsjUl2fLPasYtPqrb/R/myC3PL62Hf1BmXisbMaH9W1yGpuMN7m5/hv\nIfDfykbOv5pcmYnJoJxYyjL46sn+y/4r2H+tjgmQJElqxwGQJElqp81PYIwCs3LrfLKgEjFk9Tbh\nqqbG8ueXt83i4uoYPA8+XRERcvW0BD/HdsT2G3krcmybRenL67PotYpbs6c6qidOqmNH7Js9vbH8\nuTj/6kkF1tTgcvZvpLpuWZs3Ukcj2vHFL35xWnf48OHZz+n2Zv9l/xXsv1bHBEiSJLXjAEiSJLXT\n5iewKhbNXG8hrWoGfxYdzn2uOkYWzY6Rv025ejIiK0BWlYfP4vbq3KoCa9n1ro6R2UiEnJVrn4ub\nGQkz3maxsqykffYqguX1WbE6Pk1RnXO0+XOf+9y07q/+6q/SbdWH/Zf913Lb7L9unAmQJElqxwGQ\nJElqp81PYFVsnL0ht4phY30VzVaRZbbf6v0o2T6qWDQ7p428E6Z6b052vGy5evqgisWv1d5lm3nz\n8txTK8SIOLat3rzMc2JBszheFRszkuZ7ejYToWfHqAqwqQ/7L/uv5W3tv26cCZAkSWrn5h2arVg1\n2p67K8qWqzuBqqZChm2Yu2uqZJPZuF9OhqvKo8+N7rM3JFej/+quMI6xkbL7c3dQlWyCY3W3Gdts\npB4IsabG8nGX/57dhVeTD+fuoFhTQz3Zf9l/LR/P/uvGmQBJkqR2HABJkqR22vwENhfvzpVPX14/\nt9+5CXVVRLyZWh1zNT6qug5zsXEVb2dvU56b1DjGWhy6kQmXse+N1M7I1mdvyl5en73dmOdU1buI\n6L2aRDhXf2Qzkyh5bpt5C7duT/Zf9l/B/mt1TIAkSVI7DoAkSVI7bX4Cq8rDZ7Ho3JuFqyhwbh9V\n9JjNqN9I6fu5cuzVeWTXooqFszdAV/F39RTF3BuSs8h6I7Hx3NMVc29Trj6fPTnCdlZPQFR1OZY/\nv7w899qBrVu3pu1UH/Zf9l/B/mt1TIAkSVI7DoAkSVI7bX4Cm3sqYSOz4eeePph7UqOKsbNt5p6y\nqPMo6ygAACAASURBVJY30x5uM1fafIy1iHSuYNiyLHrmcva0QxUVb2Q5W5e1be5Jjspc2frlbeL8\n5qJirmfbDhw4MHs83d7sv+y/rvV3sv/aOBMgSZLUjgMgSZLUTpufwDbzNuW54mBVhDgXQ1cRalbk\nq4pp5yLk6j1Ac/uonjiYezqDqkj3et4rVLVnM+/dmSt4tpltx1iLgqttN9KObL9zT+ps3749PYb6\nsP+69j7sv+y/rocJkCRJaqdNAkSbmQyYjXQ3sm12vI3UxgjVXdpmJjhmbaj2sZlJixu589jMBL/N\nHGOuHH113OqONDtGde2zyZDVHdTc91GVh8/epryRSYvqw/7L/muZ/df1MQGSJEntOACSJEnttPkJ\nbC563czku6oeRvUW4uud4PdBbbuZEvSbqUUxF61uZNuITqtIey6m5ueq0v1ZTEtzkXU1kZHbxpuX\nx1grK7+R+D+L9G/mtynrw2H/Zf+1vK39140zAZIkSe04AJIkSe20+QlsM09GVG/6zWpucPnnfu7n\npuV///d/v2YbNhPjVuaeBqm2zWLRjTy1kMW7GylBPxcnb6T9mblaFXOR9kZqZ8w9fVG1J1uuvlO+\neTni4nfeeWda9+677264Dbo92X/Zf2307/ZfG2cCJEmS2nEAJEmS2mnzE9i99947LWeR3EZmuGdx\n644dO6bl5557blr+p3/6p2n5C1/4wrr9Vsee+zvb85//+Z/T8tGjR8cYY/zqr/7q7H7Z/j/5kz8Z\nY4zx5JNPTuu++tWvTst/9Ed/NC3/1m/91hhjjGeffTZtD6/rZiLdKk6ec6NR+EbK3c8VLqO5CHkj\nJfFjmbEy42T1ZP+1xv7L/mtVTIAkSVI7bRIg3umcP39+Ws7qL1Sj5qiNwG1fe+21afnLX/7ytPyX\nf/mX03JWR+N661rw79/85jen5d///d9ft221D57TH//xH6/b9rd/+7fTffzgBz8YY2ys/kR27OqO\nhfuLFyvybuyJJ56Yll944YV0H9lEvbkJgNW21YTCrI7GRu6K5yZ7zpW8f/PNN/MTUBv2X/ZfVbuW\nt7X/2jgTIEmS1I4DIEmS1E6bn8Duueeeafn++++flt96660xRh3TRqS5vD7wc8eOHZuWs3LzG5mo\nmP292vYP/uAPrtm2an9zJeGrzwVeE6ri67m3EGdRLte9+OKL0/Jcuf65+Hd5+VrtZXu4v2ri5Bzu\nl+XheV1i8mD8uxzj5p5EqA+H/Zf9V7Z8rfayPdyf/dcaEyBJktSOAyBJktTOlivXW8RAkiTpFmUC\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS\n2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEA\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS\n2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEA\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS\n2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEA\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS\n2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEA\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS\n2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEA\nJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2nEAJEmS2rnro27Ah+V3f/d3p+V/+Id/mJavXLky\nxhjjjjvWxoJc3rJly7rlalsu33nnneuWs32NMcZdd921btt77713WnfPPfdMy/fff/+0zG1iH2+/\n/XZ6jCeeeGJa/vKXvzwtb9++fYwxxqFDh6Z1Dz744LR89913j2Vxza51Thn+/fLly+n+3nvvvWtu\ny+v6zjvvTMvHjh1bt47X56233lq3Px53I8vZ+fHv2ffIZf77ILYzjsHvedu2bdPyAw88kO5Dtzf7\nL/uv5f3Zf904EyBJktSOAyBJktTOlivMwG5jDz300LScxayMBxn1bebyzG1b/T1bX8WYc9swbiWe\n0xe/+MVpeevWrWOMxcjys5/97LT86U9/elo+ePDgGGOM119/Pd0vo26uj30fOXJkWnf48OFpmesv\nXbo0xhjjjTfemNZduHBhWn7//fen5VdffXVaPnfu3BhjjFOnTo2bTfzbWsV/ak3+c9US+y/7r4/K\n7dx/mQBJkqR2HABJkqR22jwFNjfbv3oCYG7mfLVttk3197mnDzZy7Co6Dh/72Mem5XhyYowx7rvv\nvjHGYvzLGHb//v3TcjzhwFn/jHd37949LfMpghMnTowxxjhz5sy07uLFi9Myzyl74oRPeBw9enRa\nZuwd58T9vvnmm+kxPmy/8Ru/McYY48///M8/sjbo1mb/9bFp2f7rw3U7918mQJIkqZ02CVBWD4Kq\nGgercD2j92oSYVV/IibX8e4m7o7GGOOpp56alvft2zctx50Trw/rQbz22mvTctTiePfdd6d1nFDI\nWh2cqBnt4DF4vffs2bPuc7w74p0Q79KymhKcLMq2sz2xP+6Xf+dExezOeyP1QLjNH/7hH44xxvjq\nV786ravqr0gZ+y/7r+X92X/duFu35ZIkSdfJAZAkSWqnzU9gmyl5vmoRLc5NMhwjL3NOjDejBsYY\na9Ex41huu3Pnzmk5K02/Y8eOdW0YYzH2jQl6Vbz7yiuvpPuIiJTxNmNsxtBZezipkVEvzyMrwX7+\n/PlpmXFy1OjgvrjMGh4xcXK5nRl+v1//+ten5Z//+Z8fYyxeS27LCZcf9r9N3Rrsv+y/gv3X6pgA\nSZKkdhwASZKkdtr8BPZhlPGeK/lezbjPlhkl8mkIxsaMWWMbPlnApyG4ntFr7K96KzDbHHExI0/G\noizt/uijj07LEc9Wb0Xm8SJmrp6yYN0O7iPicq7jdWMsHMuMh/kWZr55mTF0xNP8e/VEyZe+9KVp\nOXtKooqNs21vtVhZq2f/Zf+1vGz/deNMgCRJUjsOgCRJUjttfgKrzL3JOFs/F/9W+2CEWkXEEaEy\nKt62bdu0zPV8YiCiXMbDfHKCn8v2Ue2X0Wpg/MnIk/Euj50dlyXf2eZ40zOfAPmP//iPaZnXip+L\nJzjircpjLH4HfIIjio0xCia27cEHH5yWI3qu4mYu86mMWM+28d9CFq3zut7MEbI+WvZf9l/L7L82\nzgRIkiS10yYBmrvT2Uzp9moyINdzxB4j/WoyIO9YYpvqToH75Sg7+xwnDvJO4MCBA9Py8ePHxxiL\nk+x4x8bPBZ4n28blhx9+eFqOiXisZcE7JH7uz/7sz8YYeW2NMRbvzDgJMF6WWF23eKHhGGvfGScv\ncjIgX7bI9XEteAfF8+B63kHF9WLNEd5t8rrEtbqVa2to9ey/7L+C/dfqmABJkqR2HABJkqR2tlxZ\nRYGJWwBrTjB6zEq3M5pl1BvxJCM91pHgchYhV3/ncjaJjHEi482sPD7be/DgwWmZ5diPHTs2LUdU\ny/NnTMs4+emnnx5jLJaBZ9tOnz49Le/du3cs4zk999xz0/ILL7wwLTOSDYxj+d3xGNF+HuOZZ55J\n9xvnzJia3wHrgfB4sQ/+W2L0zmNkP0kwKr506dK0fObMmXXLrN/BbRnfqw/7L/uvYP+1OiZAkiSp\nHQdAkiSpnTY/gfGJAsaCMUOfM/W5zEg24lteMj4tsH///mmZ0WvEkydPnpzWMU7kbP6IgqsnJ7Ky\n62OsxamMlf/7v/97WuaxGXXGtYjaEmPkNTDGWIvAGc2yDTwn7iNiZj5FwBibcWk8icCaFIxNuZ7n\n+thjjy0ca7ltjL2jbdyWNS4ef/zxafnZZ5+dliPKZozPfytsJ+PpqMvBv/PfIK99XIu/+Zu/Sbc9\nevToUD/2X/Zfy22z/7pxJkCSJKkdB0CSJKmdNoUQGfux4FM8GcG48ad+6qemZc6Yjwgxi6D59zEW\ny5HHsflUQ/XG4tgfC2JxW8awbPNLL700xlh8koFPTrDNnPkfx2OszOJZjNCXjzXGGLt27ZqWWXQs\ne9MzY1rul8c+fPjwujay7bwWvPZx3iySxu+Z1yLaw6cwGEdHcbXl4/FngRAl7JePx6c5Ypk/PfCc\neF3ip4MvfOEL6bbqyf7L/mu5PfZfN84ESJIkteMASJIktdPmJ7BHH310Wma8G1EdY1xGvYxkIyJm\n3Mh4j09qcJvYd/XeFcaUsY+qYNgjjzwyLX/ve98byw4dOpTul7PvuX4u3uRTCxFZM0rlOTH25VMg\nca6MvBkhs21ZoSyuY2SdPTFRvd2Yx/uXf/mXMcYYn/vc56Z1Tz755Lr2jrEYp8eTEbzGjMqrJ1Vi\nuXqXEo8X79hhBC3Zf9l/Bfuv1bk1WilJkrRCbRIg1kZgvYdY5kj45ZdfnpZZ/j3ubjg6rkp7c4Jb\n4F0K7zB4VxC1OHiXw8mJ3/zmN9O2xYibo3jeCfGOjHcyWR0Nju45ko+RPutecFvWzuD5xTYsic7z\nY9vinKry8byuXB/XlhPyeDy2J+6K/vd//3dax7s/TkTMyvWfPXt2WvfEE09My5/85CenZdYJiWPz\n3wqvN+/0jhw5su7ceE7qyf7L/ivYf62OCZAkSWrHAZAkSWqnzU9gc6XkGWkybmR5+KhhwSiQdS14\njGwSII/LuDWLabnf7373u9NyTDIbY7E2RLSfsTLjXUaWbEfEyYyVGZvycxlOjGO0zomaWf2JPXv2\nTMsnTpyYlmNiINvAOJnXnhM8Y30V0/IngvjZgJE+98XvkZM2IzrP3sbNto+xGC3HuTD+5vfI2D/+\n7fH8WZ9EPdl/2X8F+6/VMQGSJEntOACSJEnttPkJjLEf6xZErMf4j3Eyo9B4EoORL9+ay5iS0WLE\npXwzb1afYoy16JBPcjBi5RMM3EdEj4xFGemy5DnfAB1xKrflteD+Ii5mrMo27N69e922Y6y9yZjX\nik8Z8AmGePIhi1XHWKxrwadh4nvkMfid87plNSoYt/PYrJkR0TLjfX7PjIX5E0Jcr+wNy8vbxjnx\nyRp+Tj3Zf9l/Bfuv1TEBkiRJ7TgAkiRJ7bT5CYyxKWflx0x7RpOc7c64MSLJqigZo2k+OfD888+P\nMRZnxnO/jJBjf9///vfTY1RPe8Qyi2cxeuTnXn311Wk54mJGvtW1inYyjuYMf17DrMgZ42ZGqIxs\no2gWY2zGv2xntU3WBka98d3w+2JUzs/xe/j85z8/xhjjzJkz6X55jfmdxb8bXh+eR/bvhp/PnkJR\nL/Zf9l/B/mt1TIAkSVI7bRIgjlizugS8a+KdDid4xT54Z5JNFhxj7a5pjLUROUf83C9rakSpeI62\nOTmPkwu5TVbjg8fj+fNOJq4FJ9FxH7ybiH1wRM/RP68bjxE4UZET7nj3ktXtYF0LHo/tjAmcbC+X\nOfEvrhvby7Zld2NjjPGTP/mTY4zFfyu8w+R6HjvuoLIJmWMsTqKMz/E68Bjqyf7L/ivYf62OCZAk\nSWrHAZAkSWqnzU9gnODFCXyxzEiP2zIWzMp8MxZkaXdO8Iv98RiMCL/1rW9NyxG9Mh5lPQhGoTx2\nLPNzPB63Zb2P2DevSfWG6IheeX2qcvWM6efqQHDbOH+eJyccVm96jgg4i26XPxffH6NZXiueP6Pw\n//qv/xpjjPHTP/3T0zpG+mwP4/s4TtU2XreIyHncuXL+uv3Zf9l/Bfuv1TEBkiRJ7TgAkiRJ7bT5\nCYy1KhjvRrTIvzPSZOwXn2M8SNlbmrlvPmXBffApgahxwVoXjGDZdkadcTyu41MWjEsZz0Z0ytoY\njFP5RMHBgwfHGItPgPCJCkbL2dMFPGeeB+PSqAPCJwtYU4LbMsqPc+W5MdLl8eJ7ihL3y/uq/i1E\njQ+ec1W6nk9lxLnwuvE7Z+2T7HusIn31Yf9l/xXsv1bHBEiSJLXjAEiSJLXT5icwRoRcjmixikUZ\nw0a0yGJWfCKBTyowLo0ok9Hk8ePH02NEJFmVNq9K3kdkWz1xwfVZ6XqePyNLRqGxv6pkfFVKP8MI\nle2M9lTnyfWMrOPY1d+zcvyM6Xl9WEo/+7ngO9/5zrT8yU9+clpmcTQeO64hY3X+nd91fA/8DrK3\nP6sX+y/7r+X19l837uZtmSRJ0gfEAZAkSWqn5U9gLCoVESjXZU81jLE2272KmLMnLsZYiwO5jnEr\njxFxIdvAmfqMdFlgKyLS6hiMjdnmuC5ZHDtGHmXzGNwXo05ei9hH9eTIY489tu48sicklo+dvZum\nesqiepN1tl9GvXxz8q5du9Z9jt8HZW9yZizMuJltO3HixBhjjCeffDLdVj3Zf9l/Ze3M9mv/tXEm\nQJIkqZ02CRBHtLybiElbHI1z1MxtY7TM0TZHv6y5UE2CC2fPnp2WWbciJtRxlB+j6jEWJ7txRJ5N\ncOQ+eMfCtmUl6Pl2Zx4vrhXPh5MoqzohgXep3AePF+fBOxNeH54fzylqVfD74OfYnlhmjRC2oRJ3\nMqdPn57WPfPMM9NyNnGQbeLf2R5+H3F3/uyzz07rnn766dm26fZ2q/Rf//cLL4y7L18el9GehbfP\nJ6+/uLqTH/2dNWOw37uZnGCb2MOdSE4W0ostW8blMcbpO+8c/27/Ncaw/6I2AyBJ0gfnsYsXx/tb\ntoyPYzAyxhjvYqDz/TFG3M4dGGNM//d79f9kr+Cm7R/wf8I/d+XKePDqfjBsGuPq/p6/+rltV66M\nL+KmbVy5Mu68cmV85t13x2eOHPnRfh9/fPMnp9uSAyBJ0g07e//94+F33hnjypVpQHMzeH/LlnHX\nlSvjpfvvH//fjh1j6/xH1ESbAVD1huRYrkqpZ7UxOKmLE8v4kxOjzIipjx07lv6dkW38BMZjMLJm\n2zmJMN64y7iZbefkOsawEV9yImNVdj6OUU0irNbHtWdsyu+D5xHxLNteRa88Xlwvxvi8hlwfMTtj\nY15XHoPfU3yO14f1Ofi5rA4Gf07k9anenB34c4N6uhX6r/fuvnv8P7t2jR97882x/dKlaRDEf9F3\nbNky4ke5E2+/PaVB91z96ehd9E13oz3/b1Hb5/LV5ctX+6nXxhj/xLo7V/97emzLlvHVrVvHeOed\n8Xn7r2ld9/7LSdCSpJV4/c47xw/uu288ehO//0kKbRIgSdIH6/9cuDCeeOedcewmrP77f11Nas7P\nbKc+2gyAGENyNv/Ro0fHGItPAzA2ZJQZUR/raFRPVDBOzp6+4M9QjAizGg9VWXk+tRCRJI/BaJbR\n5Mc+9rFp+fDhw+vazug1q7/ByJOxKd8KzBg+8JwZw/JnO24TeLzPfOYz0/IPf/jDde2oyq7zJ8D4\nKY/tpd27d6fr498QryXb8PnPf35a5hMa0X5+d1k0zXZyHX+GVE+3Qv915+XL48sXL443t2wZL6G9\nA224g+eBp6Dipyz2J+wj+N8Dz/XV+O8MbX+Lr2y4ur8tY4xPX33S6l/tv9I2dOy/br5huiTplvNj\nr7023tyy5aaaAC1diwMgSdINe8/Bj24xbX4C4yz5iI3HWIsFq0iPsW/8HMS/XykKe2Vl01988cVp\nHX/2YkQYn+MbfRl1MiJlTBnbVAW4GKEyvo04nE+B8Wcvfi4rtpU9nTBGHsMzQuXn+N184hOfGGOs\nFQZblr3dmcdgBM2fDXjOca68lrzG3JZtY0QcuI+swCRxv1lUzs9xv1lRNvVyK/Rf77z99ohWLLzp\nHf/W2c6FJ1Ov/rdxuXh66j1s+x76gDi/t9AXLHzu6s89799xx0L/E+y/evdfJkCSJKkdB0CSJKmd\nNj+B7du3b1r+n//5n2k5inwxjmVszBnzEfsxmuTn+HQG9xERYDUbnnFqRJncF4ucMaZknBrHqAoe\nsj3ZsQ8cOLBuX2OMcfz48Wl5//796/5eFWjLnijhtoxYeezYhufJOJk/z7GIW2zD68bvLoub2Ua+\nl4fXkMeLJ+aqN0Hz/LjvWF89RZI9VZf9u1Nft0L/df/ly+O1+G8dPxe9gc9dRp/Fd3ptufq5y/xv\nJOnflt17tZ3sQ+/Af3sXr/an91y5Mt68+vSY/Zf9V2gzAJIkfbD+++r/ga+fbfPR++dPfnKMMcZD\nH3E7dPNoMwD6/ve/Py1zglZ2V/ROMWkv1vMOghONuY/s7c3Z5OMxFpOc2IZv7GUbeCeQ1eqIO8Ll\nNlR3iHG8bOLgGIu1huJceffDNnAfvC7vJzU+2AbWrYg7J5bd57asucHPxXXhteTEQN4hRjsuF+X1\nWWeE20TbeC3ZHl5vXpfYPvu3VLWjmpCqnm6F/uuuu+4a71/tO17HKxb4ZNi76FsWJhpf/W/gXr4B\nHefJPontj+PxmvC/pweuDsjue++9j6z/+s2zZ8f2994b72/ZsjCB+32ex9X0ianYe0zIkE5FizlN\neQtSprvYX+Dhljuu1ne78847x91XroxTd989XsTb4Dv2X20GQJIkfZi2vffe2Pb++/9/e2cfZVV1\n3/3vPffeeWEGmEHkZQCBEUTQSiQCMRhFSCRPVmqMiUnT1XY1NY9NV2LaFbVdMWvZrDQv7WpaE5O0\nEVeTZ0WT5olNazQa32JQQiLCoyKgyMDw/jYvwMwwc+flvjx/cH5nvmfYO6Aywx3P9/OPmzPn7rP3\nPvf+3Pv72/v3Q4OdcnOcwGuuqMChcJIwqVDAXMtvRvWkws+tSacjF9+iQgG1DndYqlTCkXQaO7NZ\nIJVCTbGIhf390T2pfB4oldDY24v569YBAB5ftuxsd31UoAmQEEKIs8K7enqQnToVk3/yEzxwww0j\n9typixZh4Z/8CdKVlUil0zhx6BA23HsvOkmJuf6FFwAAv3yT/7MfP348ampqcPDgQdTX16Ovr897\n3N0Ym89jZi6Huk9+EmPe/W4AQPdvf4v273//lHv/4I/+CBevWIGK/n50rVuH1h/8AAAw6a/+CrVL\nlqA0MIBVx45hzVe/ioGeHlQ2NGDWXXchlc2ilM9j/513okD7RX8vqRSKpRJa6+vRdMEFb2wg3kYk\nZgLELg6W52xWzPIuy38sddp1lgp5sxvPwllCtU3MXC/H+dm5c+cpz/DFZ+BNbdw22zzH/eDPsWTN\nWH18L7t1Lrzwwqhssidv1PPJpq4N2r5swvw+LNbQ3r17ne3lZ/DmcGsHx0bie/kZFkqeNwOy/B14\npHcbK18maN8myigWCcvfVGaXml13ZWMWyWU02K/Onp64EhGWC/RdZvcMu0asTQX6vRU88YyYdCaD\nulmzcOXnP4+nv/AFHN+9G/0DA2hcsQLv+/rX8fTnPodiPo/q3l5nSoc3Yr/a29ujsZg+fTr279+P\njo6O32u/SqUSKubPR8011+Dnt92GQqGAVXffjV1bt6L5+edPfqi/H+dffDHmf+hD+OHHPoZCXx+u\n/+Y3sWXBApQKBVwxcyZ+8slPAgDe96UvYcH112Pzgw9i8pe+hA0PP4xdv/415v3hH6J47bXY+cQT\n0bhncdKO9AYB1mcykd0KTG3q68Ovp08HikWgszOR9isxEyAhhBDnjrFTpuDD996L+z/0IQDAO//i\nL5BKp7Hxvvvw548/jpd++ENMX7IENRMn4okvfhGtTU2YeeWVePdnP4u+zk7se+EFXPqRj+AnN90U\nq/cdf/qn2Pyf/4nju3dH15qfeQZzVq7EzBUrcOTll7H0H/4BXRs3orqxEZPr6vDII4/gxIkTmD17\nNi644AIUi0Wk02m8+uqryOfzGDt2LBobG1EqlZDP59HU1ISJEyeirq4O7e3taGhoQH19PbZs2YLF\nixfjv//7vwEAU6dOxcqVK7Fp06aoLTVXXonutWtRzOdRLBSw73e/w7QlSwYnQADqZsxAW1MTCuFE\ndve6dZi9bBmeX70aj/3d3yGVSiFIpzFmwgTsO3IEVePHo372bOxaswYA0PToo8Pxyt72lO/UTAgh\nRCKorK3F0eZmPPzZz6Lpqaew4PrrAQDXfuELeOpLX8Ijt96KClJsmYlz56Jt27ZTrh/ZsgV1oYJd\n3dCA9qeewvY77sDevXuxePFiACfVnXXr1mHt2rXo7e2Nwg3MmzcPTU1NeOWVV9DZ2RmLgt/e3o6O\njg5s3rwZLS0tqK2tjVTlefPm4ZVXXom1Iz1xIvKkVvcePYpqUtAAoG3HDkxesABVdXUIMhnMWLwY\nY2hz9bs/8xn8+SOP4NiePdj13HMYN20aetrasOiTn8QH7rkH19x11yl1ngmX792Lyz1qexJIpALE\nLgyT7FjSY1mYJVL7krOk55IKh2L18d8tJgPgPlHBEjSfZvJJj3YK6gSdvuB7+TqfWrAf9plI4TZu\n7Ibjv7ukeWBQvub2sNzqklY5PsXmzZtPaS8Qz2q/O1z98ftyydjAYMwNbq/PHeaKE2LfAyB+GuLQ\noUNRmWOD2Akebg9LxPy9sHfN3wnf90okk3K1X1XFIlKp1Em1IpWKrlsqjMrKSqQwaA9KpRJSpVL0\nO9yzfj16+/pwdN8+XLBkCdLV1chUV+Pgli1AKoWtv/wl5q5aFetfdVUV8r29KGEwjQZnI0vhpNtt\noKMDueZmpIIAra2teMc73oHKykqUSiVcddVVKJVKqKmpQV9fHzKhuyiXyyGVSkVur/r6egRhckF7\neAAAIABJREFUSo10Oo3KykpUV1dj8+bNmDdvHp5//nnMnj0ba9eujezX+aHdLZVKyOVyqKquRiqd\nRiqVime137ULL9x3Hz50993o7ejAsT17ENB7fv7f/g0vrF6NlXfdhUtuugmHNm3C2GnTsO3xx/H8\n976HK26+Ge/89Kfx7Fe+Enu/sVNu4XfB7HcFgJmtrQCA9VOmJNJ+SQESQggx7AzNLpUekpuLgySm\nUikgCE7uT7HPF4twcay5GZMuueSU6+fPn49jTU0n/zFkH0qpVEJtbS0uvvhivPjii1i/fj1aWlqi\nv70Rtm7diosuughTp07FwYMHTwn819baiq5Jk6J/V0+YgB7KpWZs+8Uv8F8334xffP7z6OvqQteR\nI6ibORPnh/GLivk8djz9NKZfcQW6W1uRa2+P3H57f/MbTKD9muLM0ARICCHEsDPQ3Y3KceNOntQK\nAkxZuPD33p87dgylUgn1M2cCAOauWOG8b8tPfoI/+PjHUd/YGF2bedVVqJ85E/ufew4AkB07FtXh\n3xsaGtDW1obq6moMDAygv78f2WwWEyZMQBAEyOfzGBgYiFSMyZMnx+KhAaF6FapnuVwObW1teM97\n3nOK+wsAdqxfj/OuvhrpigoE2SxmLFuGA+vXx+6pqK3FjatXI11RgUxVFS5atQrNzz2H8dOmYcWd\nd0Zq0NSFC3G0uRknWlrQ29mJCXPmAAAmXXopjpEqJ86MRLrAWJLjIF4Gz+D5XpP9WILlz7Es6DpF\nwSeUWHpml0pHGKyK62WXE8uQfI+d3Ep7TllMohUIu3tMsnSdFhn6bHMB8d9dAdMAd3h0bg/3n+VS\nu86nwPhUGrvAOLihtYNPw5xuJcd/P0YBwxh+N9ZvvuZyrQGD7xEYfE/8d1fwSyDu1jT4uyREudqv\nMfk89o4Zg6rqasysq8N7//mfAZz8nbVt24YX77sPO554Ajfcdx86DxzAsZ07kU6nYy6xIHSfIZVC\nOgjw7De+gRu+9S30tLbi0MsvA8VizH3e39eH1p078fQXv4grP/c5ZKqqkAoCdO7fj8f/9m9RGwQI\nMhn0tbUh9dGPomHqVBRqavDEE0+gp6cHuVwOy5YtQy6Xw/79+9HY2IjOzk5s37492gRdKpWwZ88e\n1NXVIQgCVFRUoL29HZdccgm2bduGffv2YdeuXVi6dCna2tpQVVUV2a+qnh60bN+O1x9/HP/rm99E\nEATY9cwzONrUhIrKSiy9/XZs+v730bl9O3b/5je4KTz6/vKPf4zju3fj+O7dmLJgAW5cvRrFfB65\n48fxzFe+AgB45stfxvI770SpWES+txe//trX0DskXQnbZHtnrmvpdDqR9iuREyAhhBBnn7aKCuDY\nMfw03MQMxCdcz99zT1Rml9a3lyyJyq8+8ghefeSRk5/N5fDQrbei0NGBWVdfjY59+5zPbW9qwmN/\n/dcA4hO52jB/IQA89LvfnbxGC66XX345KtfU1ODo0aNRHabm2ILx6NGj0d937doV2wc1Y8YMbNmy\nxdm2ScUiWh54AJt+/OPY4gkA1n/jG4Nt+dGP8EI4AYrdc9992Mhxg8JJy/G9e/HQpz99sr00IRFn\nTmImQLxS51WRqQC8SZhntBzzxoVvEyHX0Rb6e1kt4Xr5B2urG/NHA/FZNasvvCKzWb0v/gL3n1dQ\nVuYUG7xCmEIGxAwZP4NXm6zIuOD2cP/5c7bK4OfyWLBqw222/k2bNi26xuPGKUKsPn5HjO/d2KqH\n05QsWLAgKvs2YBu+BIG82rLr/HdOmiiSyWiwX0EQRBttWbXlevl5/Pu0+EBDD1Jksln84b/8C/K5\nHFJBgHV3340sp+yw5KOcKoP6V1tbi6oxY2LPPZv2q6KiAldccQU6OzuxefPm6Dlmv87r7MSFAAoA\nOqqrAepfniaGFt15HLUhFoOMVBQb24JnczG/Jx5P2yRuaUpq+/sxNpwMjhkzJpH2KzETICGEEMPL\neeGkpvs0950pO9eswc41a+KLtjfoUultb8fmW26JTma1016ht0p/fz+eeuqps1bfSNNxmgny2x1N\ngIQQQpwVZoTqxN4y3PdxaRix+tmzOAEa7Tx36aXnugnnlMRMgFjSY9eJyX4sFbri6wCDEqAvBgJv\n0HVtCOa/M012VJPayW3gZ7C0zM/IDjlSCsQ3Nq9cuTIqv/rqq1HZVlY+SXMf+dxtIzWPCW+M4/hC\nrpD4DLed5X2TS/l98CY6Tj3hin3iyxrNLgJrD+8F4LFyxTDi+vj979mzJypfSsaEN5pbfA3eC8Hj\ndvjw4ahs7oaLKUtz0XP8VySH0WC/Jnd1Rfe6Nl8DwADZmTS5stKOdAn8+22cPTsqt4axa4DB2DYF\n+n33kvuuM7Rl2VwOY8PnjaT9qi0UgDA2UiaTibkWi/TOLO0Hj1WKxoTts7XGZZvCBjuvm5vN2laC\n7JeOwQshhBAicSRGARJCCCHOBZkpU3DDvffi/37sYyP2zIZ3vhOX/9mfIV1ZiSCdxonDh/H/Vq/G\nCYr4fHN4ku0/SGF7I8yZMwcLFizAz3/+c8ydOxeZTCamCJU7iZkA+eQ7k3U5HgZLpCxZmqzrCzXO\nMrTrS+BzybhOePhOZ3AWZk6RYRIpt5ddPNu3b4/KLN/aUU+uy/LkDL3X6uZ6+TQIy/Qu9xyPD/eZ\n5VaTULmumWEgNCCeboLbbHF87Jjq0OfxCQ9rG7vWYiHjWZpnCTm8h98H1/vSSy9F5auuuuqUOvh7\nFZO6HSdjfNm/RTIZDfYrSKejaM/sNHKdcgUGU2QAg9/3PH3v2cXTTrm02HVmJzL7qZ8NdBI0TRnQ\n+bSaMdz2q1AsIpvJIMhmkQqC2PO4/xa/h98d/+or2d0V9onfOduQIAgwfuZMXHX77Vhz113oCN1c\nM6++Gu/9+tfxyC23oDgwcDJNSFjH2LFj35T92r59O5qbm5FKpbB8+XJ0dnZi9+7do8Z+JWYCJIQQ\nQow0TZMmIZg0CRMdf6uZPBnvv/tu/J8PfhAAsPhTn0KQTmP9vffif//qV9j4gx9g5pVXombiRPzq\n7/8ex5qbMX3pUiy+5Rb0nziBgxs24OIbbsB/feITsXr/4BOfwNaf/jSa/ADA3rVrMXP5cjSuXIlD\nL72EZf/4j+jauBFjGhtx65gx+NnPfoauri4sXrwYS5cuRbFYRLFYxJNPPomBgQE0NDTguuuuQ6FQ\nQHd3N372s5/hkksuwapVq7BhwwYsWbIEM2bMwL//+7/jL//yL/Gtb30LADB16lSsXLkSDzzwwLCN\n8ZtFe4CEEEKIMqOythbtO3fioc98Bs2/+hUuDidJV912G5792tfwxG23IUvqEzNhzhy0vf76Kdfb\nXnsN9XPnAgDGTJuG1iefxGu33YYdO3Zg2bJlAE4qXhs3bsSGDRuQy+VwYZhj7IYbbsCjjz6K+++/\nH7t378a8MEcZAGzcuBF79uzBd7/7XWzYsAF1dXXRhvB58+Y5U4SUA4lRgHzZkk2e478PTWY39Drf\n6ws6xc8wWZQD+vEz2KVk8iz/nSVWTtnAMqy1iQP+sUzdRsn3XKcafLI4u3hcYfdZ0mV523VKwheM\njMfQnscyP48Pl/m0i/3YDh486LyXsZN07B7g9nLgLh5j6zcHaXRl5gbi78zGhevyucDsO8Sn/fi7\nJJLJaLBf1QMDeDl0yaXpt5Ul9w2nagjYHoTPrqLfIT+D7QEc9st3astcR9n+fjxy+eUAgHEjbL+y\n2exJF1gqFXPr5fN5pIMAKQDVYTuKpRJQKkWuwMMvv4x0Oo2uI0cwbvp0VI4fj0x1NY689hqCIEDT\n00+j8b3vjb2vMdXVyPf2Ip1OIxjiwk8FASoyGdTW1mKgowO9zc0I0mkcOHAAV111FQqFAk6cOIHr\nrrsuGofOzk6MHz8eVVVVOHr0KNLpNNatWwcAuPzyy5EKT7mlUqkodciaNWuwaNEiPPTQQ5g9ezae\nffbZsrRjUoCEEEKIYWJaaysa6Oh+jCH7Y3h/EzAkxYVNMmjyVfIcMT++axcmzp9/yvUJc+fi2I4d\nJ/8xJPRAqVTCuHHj8IEPfADbtm3D5s2bT7tw9rF27VosWbIEF154IQ4cOOCdlJ9rNAESQgghhomK\nfB6VHvVjoKcHFWPHIl1ZiVQQYNqiRb+3rt6ODqBYRN0FFwAAZl9zjfO+1x58EPM/8hHUzZoVXWtY\nuhTjZszAgbVrAQDZsWNRHbq3Zs2ahcOHD6O2thbd3d0YGBhAJpNBfX09giBAf38/enp6MHXqVADA\nsmXLsHTp0tgzi8VipIh3dXVh3759+PjHP45NmzadZoTOHYlxgbH8xqeHzGXE7iJfgCmTOln+5HtZ\nCnUF2/Ll9OLP2fN8WZr5Xu6H3cOBAjnxnu8Eg83qL7vsstP2ycbKFzSQn8H9s7bx3315Z0x6ZheS\n79QVP9uCo7Gk7ZNcbWz5FJgr+zUQHyv78fuCLfryLtm4BY5gb0OvW582bNgQXZv9Jo+oircPo8F+\npdNpzA/bsYlcSDG7QO3hk1t2j88tzToJu86sNHny5Oha7OSmua+CANeFkaBfCfe6AMNvv6r7+gYD\nF44di6u/+tXo3vbXX8fW++/H3jVrcP33vofO/fvR1tSEIAgG31WhgFKhgGKxiFKphHw+j9/ecw/e\n/0//hO6WFhzetAmlQiGWH60nl0NPUxOevPNOvOuzn0WmqgqpIECupQW/+fKXUcjnUSoW0dfWhuIN\nN2DqtGmor6jAww8/jO7ubhw/fhwLFy5Eb28v9u7di8bGRnR2duLRRx/F+973vmgT9IMPPhjlQgyC\nAFu3bsUdd9yBb3/72/if//kfVFVV4Y477ogljS03EjMBEkIIMbxUl3FW8rE0cRxpCkeO4JlPfSo2\nwTO30KbVq6MFHC+uvksKy+uPPYbXH3sMADCQy+GXt9+OXGsrZr7nPeigaP1Me1MTfvk3fxP9uzZc\nPFbQ5O0BymNmi8uf/vSnWL58eXR97969AE6GILGTXLbQfumll/Dwww8DAH7xi1/gO9/5TvS5a665\nBvfff/8bcp2NNImZAPHqhf2RttLhODmWNA+IKwO2svCtmpgDBw6c8jlWL/odMTCAwRUJ18t18ed4\nVWgrDq6LV4q8cdeVMZ5XTRwSnlUkewaPpW/V5PrSc9tc8XW4zGPF/eT3wZuVLRx/pWfl6dp0zO3h\nFTQrOdxO3pjsajtvQOf3ZOPF7zSW3JHKrpVwbAOoSCSjwX4F4YZeIJ7aopPsEP/meH+LbZRO02+2\n3xPTbGjGeCCeNoJ/v2YPsr29yIY24ExUn7Nlv2r6+oBw83E2m40fIKHf/dFQdc54VC9uZyabxaqv\nfx393d1IBQF+86//Gnsf/E55XDgNSSafR6lUitnWs2W/zjvvPNxzzz1obm7Gj370I9x4440oVxIz\nARJCCCFGO3vWrsWetWtjucTeKD0tLfjdH/8xLgyDRu6kALtvlfb2dnz0ox89a/UNJ5oACSGEEAlk\ncRhZ/2xOgEYTiZkAsRuB5T1zE7E06dsca/Im38upKVg25c/Z81gq5b9z2HlrD29C5HtZ3uUNzyZr\nsw+Z4QzKs+hkgG34ZYmZ+8fSu/WPNyhzn3zuJ5OLYxmLCZfczJ/netkNxe1csmQJAOC3v/2ts17O\nZM19Mk63YRoYlIB5kzR/rxbRCQ52M1jdXJerXr7ObefYRiKZjAb71ZPLRVnNuY2+7zq7ec02+DKH\n99Dvvq6uLirnwjbx743bafawWChEbWOXzXDbr1KphFxtLQqZDDLpNPrJzvCzp4VKzD7ez0P1VtN4\nW5+4NQXPuMXcc5bSIvwu9Q8MIBv+/ciRI4m0X4mZAAkhhBAjzfHzzsMATa5E+aAJkBBCiLNCq2dT\ndTlwaPr0c90EUWYkZgLEEjK7lyzSJcubrvQHfL3KIUcCcUnXdWqD3Te+bPBW9mXQdZ2AAAazoLPk\nyfFj+HmxsOmhS62joyO6xhKzK7YNn4bwpZtw9YnbxmPliinC48oSK7vf+JSbjTF/juV03wkOwyfv\n8njbM7g93Pbdu3dH5Tlz5kRlk9ZZYufvoEuG5zZwvSKZjAb7lQ4C7A3dSyVf5F+2X3TZ+hRzW5Md\nip06c8RF66P2cv/4t9oUxqypGkH7lclkUJHPIwgCDFRVYdCxFM8Gb/aJbVbsFCuPmyOeWNZxEg2I\nnySLTutZbCQahyAIEmm/FAlaCCGEGCbOP3gQU8JYOqK8SIwCJIQQYngZE6oKfae571xQGx4ayZNC\nJJJNYiZALOmyfGdulEmTJkXXfKcoTN7zpYLwhYo3+doXgp7lZJM9WfKt80jBXId9jp/Lp8vOP/98\n5+es/9xP7gdLwfYMlkJjgc0cARYZXwZ0lqlNOvb9ndvpCiB50UUXRdcOhUc8gfhYWP/5NAgHf/S9\nJ7t+/Pjx6BoHD+NTea6TIb56XVmm2U25w5IXisQyGuxXf38/FoRusufO4DfLtsXu4PbEgpOS65s/\nZ24kdrmwW8/SZqRSKSx6/nkAwKabbnK2ZzjsVyqVOunqS6WQDoJ4iiN2a4VbDTi4axf13+Vy5PQX\nvFXBl/bIrtt7LhWL+OHFFwMAqpFM+yUXmBBCCCESR2IUIN60xpv5jhw5AiA+8/ZtKLRVgS8eBq88\nOFaMa4Muz5pZ1bF7uD28SuEyK0P2PF4psFLDqzuONWGrSV5B+NpmqxdWS2Ih2j2rMNcmQt+9toLg\nfvpi9HCfio4w9/v374/KPFaueCi8CZxXN/y9sTFqaGhw9oPH6nQbrV0rM+4TP9e+oyK5jAb7lc/n\no023nOaBlY4SqQj87J7QDsV+Qx4b0Um/1XxoG2LpHzAIby62Voyk/SoWCiiFzykUi7HYPfy5qB00\nrqzI8FjZ2HN7eh0xlQAgz+lGwjGyNB3VuVzM7ifRfkkBEkIIIRLI+5ub8f7m5nPdjHNGYhQgIYQQ\nQgwywREVP0kkZgLEcTTYTWQypCs9AuCOx+OL0cPxDtiFE4UuJ9mQn8cypLWNr7GEyLInu7JMFmf3\nDUuavhgOdp1D4vPmYG6HSce+bOks6bJcapKtK6YO/x0YlGljkrZjQ97Qdh47dgxAPK4Hy8Y8Lpbh\nnuMI+TLHu/rHY8XfJc6WzXXbWPCYsETMLj4r++KMiGQyGuxXJX2P+fd7glx2/FvuIBePZSrnZ3Ab\nMnR9gN1T4W+KbUGGnm3tSKfTqAh/RyNpv6qqq3F8+nTkKytjm5aB+CbmXDiebKd8Liez2f1kI3yZ\n4wPeoBzWYWNVUSwCYR1BECTSfiVmAiSEEEKMNANVVTp6X6ZoAiSEEOKssNUROb5ceP3aawEA9ae5\nTySHxEyAWNJjec5gtxC7QLhsEqDvlEVMenSEJmepkCVULltcGUttAcSlWZbC+TSIuX74Xi6zbM5S\npp2OMhcSAEyePDkqs9RtzztdnAkgLgu7JGSWyF2SfL8jTDwQT4XB7i7rK/eDXVVcn534Ytmc28Dj\nZu4yrmPXrl3RNe4/38uxgqyv/J3gPvG7se8mv+dMJjE/U+FhNNivvv5+FMMJUK+nPTF3iSOmma/t\n/DzXKbYc2akah10oFgpoDZ9RN4L2q2JgALUtLShmszg+ZQoq6HOuGGM8bmyf2F5Y2g929cHjws86\n6jgW2qZsXx+qw88dPXo0kfarfJ1zQgghxChnTGcnamhCIcqH8p2aCSGEGFXMCFXi7WW48bVx8+aT\nhblzz21DyohtnmSwSSExEyAOKuWSLFmy87mnTL5l+Y+lZ5amWSI1CZDvZffMwYMHo3JLSwuAuOuJ\nJUR+Np9yMhmS28CuLJZb2XVm/WMZk+VfPhngCiDok5Bdp6pYQvWdtLK6+X25AkUObaeNN7dtypQp\nUZnH3sbYFzTSF4TR5QpgeOxdJ+24vVwHuzes7Pq8SC6jwX6VikXUhe3oJ3sTy07ucMlxOzlwX60n\n/UU//XasL7FTWRikwrKTZ7OYEp6aPTaC9ivb1xcFQszn8/F0GtTOwBFsMebipz6b/Y4FqaU2cODJ\noiNdkF0rFYtYYwFiC4VE2q/ym6YLIYQQQgwzmgAJIYQQCWRifz8mkpKUNBLpAnNJluwO2bNnT1S+\n4IILorLJl+yGYfcVy8auUwssU/vye5kMycG6WE70ZSE2yZZ38nOmcs4VxFgds2bNiq7x6QOWOq0O\n30kzV/4YbtuAQ7oG4n21DO58ry/flisYF9fLJxn4/doYuQLKAXF3IY+93cPStC9vGrfN2s/P4Hpb\nW1ujsp1i853UEclkNNivYrEYuV+4Lg5cyLmu0uwaC//L7pJKcvFzbjHGXEec648DDBapbWnH73C4\n7VdUfyqFIAji40bPLoTvht1XvA3CFdSWr/lccgOOPGVm30oAPhJuB1g9Y0Yi7VdiJkBCCCHESJOv\nrIyiMIvyIjETIJ5N80Yzm53yCotjyXCWcJvV8+d5pswb53hFZhvDeHXD6gSvrKzMG5V5tr1w4cKo\nzKse25TIbfPFzmBFxcrnn3++83ncJ7uHN1/z6odXSK6NmqyW+FJzWB38ef47w+/JPsfvi8fVlSKE\n1TLfBj8eQ+s3j2V9/WBYNV8m+sbGxlPq3bRpk7Mf9j10xWERyWU02K++vr5okzP/9liFmEIHM9iO\nmOrMv6GCYwPv0PZbeQxtmOYNw9ajVCqFytAGjKT9KpVKODxpEgYqK4Ehhyc4dpEpVX10jdvjShES\n21zMKS883gWz9daPVCoVxSWqr69PpP1KzARICCHE8HLCk7evHOjzbAMQyUUTICGEEGeFF01d9iRc\nPZcc+vCHAQDu3UQiiSRmAuSTUE1aZImR5d3XXnstKtuGQt4MxnD6Ci6bRMptYOmZZerLLrsMgDsL\nOxCXPTkthNXNG5hZxmbZNxY/IjRYLG/yhrrY5sJQLuW28b2ny6bM13xxTaw+X7Zhfjft7e2ntI0l\nX3Z78fuwdnDb2R3Gz+b+m9TL3x/XJmkg/m6srxs2bIiu8bvhsrWJN5GmynhVLUaG0WC/ugsFTArd\n5Pz9jWVfJxvAaSHMhZP1HHjwxUKzsWC3D9sTs3sV2ew5sV8D/f1o2LMHpSBA8+zZMVdmjtyEtpm7\n6EnTwXbG+szPjcUxc/QfGHS5RfGASqVoLHO5XCLtV/k654QQQgghhonEKEBCCCGGl8tCVfY1isJe\nLky/914AQOcdd5zjlpQPD0+ffq6bcE5J5ATIJSezvMknsNjNsjnMJTNt2jTnvb6TWyblsmTJaRre\n9a53RWWTHtklwy4glhYZV8Zdlj9ZIo3F6AjrZimY3Wgu+TIWzp3+zi4nVzZlX6wdV3wRvsZjyXIr\nS8TmquIQ/bNnz47Klv4CGBxblrGbmpqisi/ehcVB8oXP589xOzdu3Agg/v1gt6crxgu7OcpZQhYj\nT7nar5kHD6Ji61YAwPmTJkV/Z/dU4DkO7jopFEu5Q2WuI0rrQG3LOFxrsVNSI2i/Knt7USoWUcRJ\nt1gsZYcjqz3b3npyv/O7MVvObsh2clly//gEnsVSsuemCwW0WT/CVB1GUuyXXGBCCCGESByaAAkh\nhBAJZFlrK5ZRJOekkRgXGMtwLJeaVOcLDuaSiA8cOBBds9DnQ+9lWdSYTv7W+fPnR2WWPdlt5brG\nbU85ZF3fyQDf50xm5qzvLKFyP1wnTmKZnukZrlMA/Dmf9GxlPn1lgbiGcuTIkahs74SDcrlShQBx\nd5hhp++AeP/55IN9Lzho5FGP9MzfkUsvvRSA35XH18s5bLw4d4wG+1WXyzltRMw9z8fjXX3iU1Ce\nz8WyqIf9rvDYOnbx2+dG0n6NLRSQzWZRSqejE3LGCRrvrtCNxMERXalCgPh7MiZTgEnux0F61/nQ\nPVcTjlWmUEBjaL8eq6hIpP1KzARICCGEGGlOTJ6MAk2SRPmQyAmQa1MWrwR40zHPbq3Mq6MdO3ZE\n5cOHD0dl3ux20UUXAYgnJuRNzq5NtdyeMwkJb3XENgPSCsqX9M+VWI/759o87dogOPR53GbXvfw8\n12qRn8v3+hL22YqL1TJOWsp9sjp8G6352YsWLYrK69evBxBfHXEd3P85c+ZEZRsL3izoS0FgY1TO\n4ePFuaVc7VdFNhspNdzCEikLrPrwN9z6VPLYN1YnAk6oGv7m2N7EEinTplyrbyTtV0VFBbpra5Gv\nqgIKBW8yVLNb3AZWllyJWPkap/9g5Wzq1KlReX9ot0xtypRKqAjr2rZtWyLtVyInQEIIIc4+x8vw\n+LvRee2157oJoszQBEgIIcRZoSdUYsvx4HMu3Mty6i7L4aW6owOFXA49lDhZlAeaAIW43ElAXOqz\nrMh8jWVKdjPZvcBgbBr+XFtbW1TmsOMGb4z2Xefn2XWWI7ltLCG7XG7cNpa3WbK1OlgK5s2CrhD1\nDH+O28Dh4W0suL38d+4/t9MkZ94YzePD42LytS8eCEvLfN02Y69Zsya6xpvHOTM8ux44W7brGaeL\nmVHOcTREeVAO9mtsby+qwu911hGXDIi7ePj3Z/fzZl9fvC12gdlVdifFDn+EzwhSqXNiv2p6ezG2\nrQ2ldBo9EybEYhRVsk0O+9/tSCvB/eR2ljwbyjnuEl83+7R7924AQE86HfW/WCwm0n5pAiSEEOKt\nk0ph3NGjKKbTZZl5vXrLlpOFpUvPbUPKiINlmLR2JNEESAghxFvm0IwZeOezz6KQyeBgGU6AxofK\nbZcmQBHfIiUniWgCFOI7GcCyn0mdLP+xbMiS5TXXXBOVL7zwQgDxE0osvfLnTL5lWZFlY77OWY2t\nzVwvf45lYZZvTU71SeGMK2YQw1KwK0YRt52fx3K71c1jws/jtvEJBwv5z+5EzorNzzDXmc8VwP1g\nWdzu57hEfHLGFwPDPvdmJWQhTke52K+OSZNQ1d2NdD6PYniP7/sdi7UT/tcXoyfDMXg4Pk74bP4c\nt8dIZ7PRs0fSflWdOIFMOo1SOo2aMWPido1PqYYupwp6H9yePjp1Zra84DnZyzaSs8t90j9XAAAK\nzElEQVTb/fbOa4tFFMhGJtF+jY6zakIIIcqfVAq9NTWo6ehAUCbqQjqXQ2mUHMsWI4sUICGEEGeP\nVApd552H2qNHUQoCb+yymGpl/2UF6Aw+ZxuBM6SsFB37WnonTkQtJYYVJ/lGqOrdTmpTkkj8BCgK\nwOUILw/EA16ZJMnpD1jG5TJnXGZXlcHuKS7bKSdfvVx2nZJgmZrLLrcXMNhXvpelV5crjsfEF0qe\nyy5J2nevybu+E1p8nfthri9uG0vdLlcWu8t88jafhmhoaAAQPwHTSnl0WHq+4oorovKePXsAxAPQ\nsWzuCrs/2qRkcW4oN/tl6Rvq29vxyk03RfU2PvEEqo8eRcoRNK9j7lwcCTPKjztxAg0//3msLgBI\nhb/7tptuQm+4v6huzRrUvPaaVRbdWywU0D9xIg59+MPRWFywejVSYf/6RtB+VVRUAKkUUqkUMplM\nvF4+sRu2je0Up/dwubICT/Z6tvWcDd7sodmh6v5+9Ie2MJ1OJ9J+JX4CJIQQQgwXXZdeiqJjEinO\nPZoACSGEOCu8eOONAOKqAAA0r1p1yvXYpttQ4eifOBG7b74ZgF/BRqiSHF++HMfCzdq+uDzG3ltu\nidLlaCoiDE2AQnynKBj7YXE23oULF0ZlPmnFP15zufh+0Jyzyq6zrOzLBs+uGpNyY3K0Z1e/K2ga\nX+N+5B35anxZkX3B2OzEAF/zuapsrFh25jJ/jttm/WaXFQdN5LbZe+SMxr5TcPw8G3vOBs994kz0\nPIb2fXFl2AZO/90bLXKyOHfIfpWn/cpWVyMDoBB+NpZjjPObhc9mlxUHk0w5AuD68pHF8qbR82zk\nx4Su/+pUCgOU6T6J9ktb44UQQohhYGDqVIx59VWMeeWVc92UGDUDAxjQyTgpQIYro+3Qss2AWTng\n1ZR3Fh5+0XilxKsfxlQL1+oIcG+Y5vbzzN23kZjrs7Iv/oZr9carGN9qynWPayOyrz1nEmeCNzG/\nkVWRwZs7fe/UtUmUnzt9+vSo3E6nTHg1ZWVeQb2R2BmlhEdrFadH9qt87dfAlCkIurvRN3NmPGu7\n42BKHynYvs3s+fBePiXXRW6/Hnqn3CdTx7sqKrC3shKHx43DqrVrAQDT6+oSab80ARJCCCGGi1QK\nxdpajF+7NprUnZg/H10rVgAAsi0tmPjggwCAseQCs4nFvg9+EMfDRdfUF17A5KamqF6jkM+je/x4\nvLp8OTo6OgAA1zz9dCwpbbRIHBjAi+HC7UlPzsmkoAmQEEIIkUBeIcUtiWgCFOKTjVnqM+mYZWOW\nem3mPfRzVmYp0Jemwq6z64Wf4Utp4ZJ3uR/8PFfMiNO5ixiuyxcv43QbFX0bHK3f/AyWm4eeLhna\nJjvpAfjdYTZGLOmyVM4bqflEScaR4ZrdAvy94LJJy774Sq7M00K8EWS/ytd+Hbn11qgc61/43/zk\nyTj0mc+c0h62X7WhetO1YgWOhyff2H7ZvVUYtF+/+8AHYjbH7mlpaRmsN+H2a/S2XAghhBDiTaIJ\nkBBCCCESh1xgIT4Jmcu2iYyl4s7OzqjMbhSXfOsLV89ysV3nE0pcr0++NXnTVdfQsu/kg+vvLtmb\nT2+44uQMxXXCg91MfGLClQqDx4Kv8+fseiyUPEnvLsma2+vrE2Pvn8eYP2dZs4F4lniTk/OODY5n\nQjnH0RDlgewXnH+X/RpE9utUpAAJIYQQInFoAiSEEEKIxCEX2Glg6dXkSd4hf+DAgag8b968qMzy\npkmZLIWy9MjXTUJlqdiXFsJV9gUE82UvtnvOJLCVSacshfLnfKe1XM/gv58uUBaPBT/bldWe4b/7\nwri7nnFemG0aiMvQVua6fKdd2M1g9/vkbR5vG4tyDh4mRg+yX4PIfsl+DUUKkBBCCCEShyZAQggh\nhEgccoE5OF12W5YQWU7u6uqKyixDGr4gX3zdpENfHhyffGuStC8nEJ/EcNXN9/LfuT6TiDn7MbfH\nlTeL2+kL8uUKUsh9Yzme28nPsHZwsC5fQEMr+05R+KRee+/cZ84M7zo5we0/k4zdLkZzoDEx8sh+\nyX4Zsl+/n/JtmRBCCCHEMCEF6DS4Zr28wuDMyrxxjDcG2oydr/GqgFc3tprgWTqXTxcbwrcZ0Bfm\n3cq+zYm8MdDgPnOfeOXBfbL28+d87bRVET+X+8krIcbu4ZUQbwzksoV/5/d1/Phx5/O4Twb3jfvk\nW7HZSu3NxsMYLRsKRfkh+yX7NRTZr0GkAAkhhBAicWgCJIQQQojEIReYA99GPCuzrMjyLsueLElO\nmDABwJmFXTcZkiVPX6ZjVyZj3yY7Hybl+rIt84ZJ6we3hz/nklsZn/TKY+VqOz/DtxnSxsK3qdEV\ngp77wZ/jPnOf7P3xva5sy0M/53o3b5dNhKL8kP2S/TJkv34/5dsyIYQQQohhQhMgIYQQQiQOucAc\nuEJ783W+xlKoK+YE4M/Oa3DMBZNIfXIjP4OlTAtB78uU7JOTXZme+aTG+PHjo7KdUGBJl/vmy95s\n7eATDnyKhNtm7edx9T2P23m6+Bt83caNZWUfXIfFSfHF3OB37nNDvBnKWUIW5Yfsl+yXqw7Zr1Mp\n35YJIYQQQgwTmgAJIYQQInHIBfYGcAUSYwmR5UaWck1aZMmXJVI+GWBy6ZlkRWbsHpYrWXp13cv1\n+U4UcB3WD59MzScK+BncP4PlX5cMbcG+hsInLlxSrk9udWWT5msmwXNdgDvkP2fQZlwpAZi3KiUL\n8VaQ/ZL9AmS/GClAQgghhEgcUoBOg2vW64pfAcRXULwqsDKHGvfFybA6eEbvC7vO1232zp97I7g2\n2QHx1Y8rxgffy/1wjZFvlcabCO1zrr4B8dD1rlWKLxGgK8YHr8C4bZ2dnae0HXBvuORVoy+OyNt5\nE6Eob2S/ZL8M2a9TKd+WCSGEEEIME5oACSGEECJxyAX2JjiTGBcsi1pocg5RXlNTE5Vd8Sd8mwh9\n7bDnseTpkmaHYnW3tbVF11gK5TabJNve3u7sB0vLrjazNOsKtc5t9m3kc2WQ5ussoftidZgszvFL\nuA0sm7uySfveuc+18FY5m3UJIfsl+2Uk3X5JARJCCCFE4tAESAghhBCJI1XyaYtCCCGEEG9TpAAJ\nIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZA\nQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJ\nkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFo\nAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgc\nmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCES\nhyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKI\nxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgcmgAJIYQQ\nInFoAiSEEEKIxKEJkBBCCCEShyZAQgghhEgc/x/NoUbR+vQPrAAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7fb46ce36eb8>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "metadata": {
        "id": "qRWBVJKYNdWM",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Get filenames of test dataset DICOM images\n",
        "test_image_fps = get_dicom_fps(test_dicom_dir)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "WcV1cL_aiSc4",
        "colab_type": "text"
      },
      "cell_type": "markdown",
      "source": [
        "### Final steps - Create the submission file"
      ]
    },
    {
      "metadata": {
        "id": "C6UWVrbM2Bob",
        "colab_type": "code",
        "colab": {}
      },
      "cell_type": "code",
      "source": [
        "# Make predictions on test images, write out sample submission \n",
        "def predict(image_fps, filepath='sample_submission.csv', min_conf=0.98): \n",
        "    \n",
        "    # assume square image\n",
        "    \n",
        "    with open(filepath, 'w') as file:\n",
        "      for image_id in tqdm(image_fps): \n",
        "        ds = pydicom.read_file(image_id)\n",
        "        image = ds.pixel_array\n",
        "          \n",
        "        # If grayscale. Convert to RGB for consistency.\n",
        "        if len(image.shape) != 3 or image.shape[2] != 3:\n",
        "            image = np.stack((image,) * 3, -1) \n",
        "            \n",
        "        patient_id = os.path.splitext(os.path.basename(image_id))[0]\n",
        "\n",
        "        results = model.detect([image])\n",
        "        r = results[0]\n",
        "\n",
        "        out_str = \"\"\n",
        "        out_str += patient_id \n",
        "        assert( len(r['rois']) == len(r['class_ids']) == len(r['scores']) )\n",
        "        if len(r['rois']) == 0: \n",
        "            pass\n",
        "        else: \n",
        "            num_instances = len(r['rois'])\n",
        "            out_str += \",\"\n",
        "            for i in range(num_instances): \n",
        "                if r['scores'][i] > min_conf: \n",
        "                    out_str += ' '\n",
        "                    out_str += str(round(r['scores'][i], 2))\n",
        "                    out_str += ' '\n",
        "\n",
        "                    # x1, y1, width, height \n",
        "                    x1 = r['rois'][i][1]\n",
        "                    y1 = r['rois'][i][0]\n",
        "                    width = r['rois'][i][3] - x1 \n",
        "                    height = r['rois'][i][2] - y1 \n",
        "                    bboxes_str = \"{} {} {} {}\".format(x1, y1, \\\n",
        "                                                      width, height)    \n",
        "                    out_str += bboxes_str\n",
        "\n",
        "        file.write(out_str+\"\\n\")"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "metadata": {
        "id": "C5cBpNka2Bsv",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "a2af9176-d9d6-49f6-f22a-5a1c455d144f"
      },
      "cell_type": "code",
      "source": [
        "# predict only the first 50 entries\n",
        "sample_submission_fp = 'sample_submission.csv'\n",
        "predict(test_image_fps[:50], filepath=sample_submission_fp)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "100%|██████████| 50/50 [00:06<00:00,  8.26it/s]\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "metadata": {
        "id": "_BjPE_Ee9rbA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1599
        },
        "outputId": "67b5f053-112b-494a-9ab3-d017bfb440c2"
      },
      "cell_type": "code",
      "source": [
        "output = pd.read_csv(sample_submission_fp, names=['id', 'pred_string'])\n",
        "output.head(50)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>id</th>\n",
              "      <th>pred_string</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0e245423-3ccd-41ee-84a5-b9f0a20dba71</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1aeb19e3-7365-4d66-afef-5157a3aca280</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0ffa20d5-7419-4c75-b821-be920771d2d4</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>242a6f0b-fc6e-42e6-84c9-f74e3d33372b</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>28eaff00-5fb7-40ee-8206-9d2ff5b081e0</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>1462ffd1-939b-49b7-9234-eeeb7f4986cc</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>1172e6d2-4207-4b90-b66e-bf2b3af86462</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>0e9d2259-5faa-4000-969c-f4d25d4eed0d</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>001916b8-3d30-4935-a5d1-8eaddb1646cd</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>12eddc6c-2d66-4df7-8da1-edd5b5fc81a9</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>21684515-f845-4d3e-acb0-13628edaa264</td>\n",
              "      <td>0.98 2272.0 6112.0 4160.0 6560.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>265cf450-572c-48aa-90cd-fb7e3eff3ccf</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>040d29d8-e737-4236-9466-649256f9ca53</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>28bb0cb8-6f05-4c48-a2bf-251a1297e380</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>0e7d10d2-e99f-4e30-826c-2d0a18edbc74</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>2f7fd25d-4968-44bb-96c3-91e377284546</td>\n",
              "      <td>0.98 2528.0 5600.0 4256.0 6064.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>2e974d90-0e16-4c34-9dee-137daa6b54e3</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>04204973-a034-4a50-a43e-2ae45186aa50</td>\n",
              "      <td>0.99 2208.0 5888.0 5024.0 5888.0 0.99 10592.0...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>26aa5215-a443-459f-9aeb-976e65c11261</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>25957b99-212d-48d2-aef4-ca816f211f0e</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>29000617-ac33-40a4-ac5c-19fb586edb69</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>1b440724-2e24-4124-b7c7-0bc82015a674</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>0fac1fec-6e05-48b6-bf0d-fd5148e4a6ff</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>23ca0450-4138-4e7a-9489-0f5b6a91031d</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>1b52079c-b9ef-42d3-9e9a-17aea3bc6031</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>2ee27b62-e1d7-4341-bf2b-9d45dc4068a1</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>c1628c47-5ba3-42dd-8df3-7ad3abd57ad0</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>c110e1ed-fb28-4b3d-b450-e370f13d4293</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>0e0df6e1-1a66-4122-a14b-7a4cd106421f</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>1d4ba8b7-5055-42a1-b928-49542438cd15</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>c05d1108-641a-465c-9b56-b32bcb548bb3</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>31</th>\n",
              "      <td>22ce653c-e7f4-45d5-9c5e-4abdc753b1b0</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>32</th>\n",
              "      <td>2c96c09b-aaa8-4c07-8e69-c2210f04be2d</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>33</th>\n",
              "      <td>1cadf040-18bb-424d-aa1f-2e6fa971277b</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>34</th>\n",
              "      <td>c0a4c55a-bd1b-4459-ba2a-8a687c2732e9</td>\n",
              "      <td>0.99 2816.0 4944.0 3392.0 5696.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>35</th>\n",
              "      <td>10163e08-1de2-44e1-9145-1922f4dd6805</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>36</th>\n",
              "      <td>1a2cef8e-99cb-43cc-b9b5-65fe5104037f</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>37</th>\n",
              "      <td>00fcc4f0-d7b5-4473-99a9-aa7d3ca071c9</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>38</th>\n",
              "      <td>2abca87e-e85f-4415-9016-c11c824220a6</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>39</th>\n",
              "      <td>28b55977-46e6-4113-a582-e93ba5c25cd6</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>40</th>\n",
              "      <td>014c6a19-38e2-4e7f-8f14-dd4f0a4582e4</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>41</th>\n",
              "      <td>2aed7ffb-3b2b-4094-921a-0d5fbb270ab1</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>42</th>\n",
              "      <td>006e75c8-1fd9-4a5a-99e7-285addebed55</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>43</th>\n",
              "      <td>147ee547-5c08-4169-8a4b-4785b90c54bc</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>44</th>\n",
              "      <td>12c8845f-9011-49f4-a9c3-e2121b8bcef3</td>\n",
              "      <td>0.98 2576.0 8528.0 3392.0 3856.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>45</th>\n",
              "      <td>259cc555-42e4-45d5-b803-d00a51e34f5b</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>46</th>\n",
              "      <td>0da8c767-77b7-4c69-98d4-2c5c91b9affc</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>47</th>\n",
              "      <td>1a132cab-43fd-486d-b5db-0fcece5fab39</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>48</th>\n",
              "      <td>1c0a5548-0e11-4793-b48e-97236374c768</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>49</th>\n",
              "      <td>1dbc0249-4761-4b19-9872-de59673942da</td>\n",
              "      <td>NaN</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                      id  \\\n",
              "0   0e245423-3ccd-41ee-84a5-b9f0a20dba71   \n",
              "1   1aeb19e3-7365-4d66-afef-5157a3aca280   \n",
              "2   0ffa20d5-7419-4c75-b821-be920771d2d4   \n",
              "3   242a6f0b-fc6e-42e6-84c9-f74e3d33372b   \n",
              "4   28eaff00-5fb7-40ee-8206-9d2ff5b081e0   \n",
              "5   1462ffd1-939b-49b7-9234-eeeb7f4986cc   \n",
              "6   1172e6d2-4207-4b90-b66e-bf2b3af86462   \n",
              "7   0e9d2259-5faa-4000-969c-f4d25d4eed0d   \n",
              "8   001916b8-3d30-4935-a5d1-8eaddb1646cd   \n",
              "9   12eddc6c-2d66-4df7-8da1-edd5b5fc81a9   \n",
              "10  21684515-f845-4d3e-acb0-13628edaa264   \n",
              "11  265cf450-572c-48aa-90cd-fb7e3eff3ccf   \n",
              "12  040d29d8-e737-4236-9466-649256f9ca53   \n",
              "13  28bb0cb8-6f05-4c48-a2bf-251a1297e380   \n",
              "14  0e7d10d2-e99f-4e30-826c-2d0a18edbc74   \n",
              "15  2f7fd25d-4968-44bb-96c3-91e377284546   \n",
              "16  2e974d90-0e16-4c34-9dee-137daa6b54e3   \n",
              "17  04204973-a034-4a50-a43e-2ae45186aa50   \n",
              "18  26aa5215-a443-459f-9aeb-976e65c11261   \n",
              "19  25957b99-212d-48d2-aef4-ca816f211f0e   \n",
              "20  29000617-ac33-40a4-ac5c-19fb586edb69   \n",
              "21  1b440724-2e24-4124-b7c7-0bc82015a674   \n",
              "22  0fac1fec-6e05-48b6-bf0d-fd5148e4a6ff   \n",
              "23  23ca0450-4138-4e7a-9489-0f5b6a91031d   \n",
              "24  1b52079c-b9ef-42d3-9e9a-17aea3bc6031   \n",
              "25  2ee27b62-e1d7-4341-bf2b-9d45dc4068a1   \n",
              "26  c1628c47-5ba3-42dd-8df3-7ad3abd57ad0   \n",
              "27  c110e1ed-fb28-4b3d-b450-e370f13d4293   \n",
              "28  0e0df6e1-1a66-4122-a14b-7a4cd106421f   \n",
              "29  1d4ba8b7-5055-42a1-b928-49542438cd15   \n",
              "30  c05d1108-641a-465c-9b56-b32bcb548bb3   \n",
              "31  22ce653c-e7f4-45d5-9c5e-4abdc753b1b0   \n",
              "32  2c96c09b-aaa8-4c07-8e69-c2210f04be2d   \n",
              "33  1cadf040-18bb-424d-aa1f-2e6fa971277b   \n",
              "34  c0a4c55a-bd1b-4459-ba2a-8a687c2732e9   \n",
              "35  10163e08-1de2-44e1-9145-1922f4dd6805   \n",
              "36  1a2cef8e-99cb-43cc-b9b5-65fe5104037f   \n",
              "37  00fcc4f0-d7b5-4473-99a9-aa7d3ca071c9   \n",
              "38  2abca87e-e85f-4415-9016-c11c824220a6   \n",
              "39  28b55977-46e6-4113-a582-e93ba5c25cd6   \n",
              "40  014c6a19-38e2-4e7f-8f14-dd4f0a4582e4   \n",
              "41  2aed7ffb-3b2b-4094-921a-0d5fbb270ab1   \n",
              "42  006e75c8-1fd9-4a5a-99e7-285addebed55   \n",
              "43  147ee547-5c08-4169-8a4b-4785b90c54bc   \n",
              "44  12c8845f-9011-49f4-a9c3-e2121b8bcef3   \n",
              "45  259cc555-42e4-45d5-b803-d00a51e34f5b   \n",
              "46  0da8c767-77b7-4c69-98d4-2c5c91b9affc   \n",
              "47  1a132cab-43fd-486d-b5db-0fcece5fab39   \n",
              "48  1c0a5548-0e11-4793-b48e-97236374c768   \n",
              "49  1dbc0249-4761-4b19-9872-de59673942da   \n",
              "\n",
              "                                          pred_string  \n",
              "0                                                 NaN  \n",
              "1                                                 NaN  \n",
              "2                                                 NaN  \n",
              "3                                                 NaN  \n",
              "4                                                 NaN  \n",
              "5                                                 NaN  \n",
              "6                                                 NaN  \n",
              "7                                                 NaN  \n",
              "8                                                 NaN  \n",
              "9                                                 NaN  \n",
              "10                   0.98 2272.0 6112.0 4160.0 6560.0  \n",
              "11                                                NaN  \n",
              "12                                                NaN  \n",
              "13                                                NaN  \n",
              "14                                                NaN  \n",
              "15                   0.98 2528.0 5600.0 4256.0 6064.0  \n",
              "16                                                NaN  \n",
              "17   0.99 2208.0 5888.0 5024.0 5888.0 0.99 10592.0...  \n",
              "18                                                NaN  \n",
              "19                                                NaN  \n",
              "20                                                NaN  \n",
              "21                                                NaN  \n",
              "22                                                NaN  \n",
              "23                                                NaN  \n",
              "24                                                NaN  \n",
              "25                                                NaN  \n",
              "26                                                NaN  \n",
              "27                                                NaN  \n",
              "28                                                NaN  \n",
              "29                                                NaN  \n",
              "30                                                NaN  \n",
              "31                                                NaN  \n",
              "32                                                NaN  \n",
              "33                                                NaN  \n",
              "34                   0.99 2816.0 4944.0 3392.0 5696.0  \n",
              "35                                                NaN  \n",
              "36                                                NaN  \n",
              "37                                                NaN  \n",
              "38                                                NaN  \n",
              "39                                                NaN  \n",
              "40                                                NaN  \n",
              "41                                                NaN  \n",
              "42                                                NaN  \n",
              "43                                                NaN  \n",
              "44                   0.98 2576.0 8528.0 3392.0 3856.0  \n",
              "45                                                NaN  \n",
              "46                                                NaN  \n",
              "47                                                NaN  \n",
              "48                                                NaN  \n",
              "49                                                NaN  "
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 45
        }
      ]
    }
  ]
}
